Systems and methods for performing a task on a material, or locating the position of a device relative to the surface of the material

ABSTRACT

Systems and methods of the present disclosure relate generally to facilitate performing a task on a surface such as woodworking or printing. More specifically, in some embodiments, the present disclosure relates to mapping the surface of the material and determining the precise location of a tool in reference to the surface of a material. Some embodiments relate to obtaining and relating a design with the map of the material or displaying the current position of the tool on a display device. In some embodiments, the present disclosure facilitates adjusting, moving or auto-correcting the tool along a predetermined path such as, e.g., a cutting or drawing path. In some embodiments, the reference location may correspond to a design or plan obtained from obtained via an online design store.

CROSS-REFERENCE TO RELATED PATENT APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 14/396,291, filed on Oct. 22, 2014, which is a national stageentry of International PCT Application No. PCT/US2013/038474, filed onApr. 26, 2013, which claims the benefit of priority to U.S. ProvisionalPatent Application No. 61/729,247, filed on Nov. 21, 2012 and titled“SYSTEMS AND METHODS FOR PERFORMING A TASK ON A MATERIAL, OR LOCATINGTHE POSITION OF A DEVICE RELATIVE TO THE SURFACE OF THE MATERIAL”, andU.S. Provisional Patent Application No. 61/639,062, filed on Apr. 26,2012 and titled “Automatically Guided Tools”, each of which are herebyincorporated by reference in their entirety.

BACKGROUND

Visual guides that are drawn on material using measuring devices may bedifficult for a user to follow manually. Hand tools that facilitateguiding a tool may attempt to minimize the movement of the tool in oneor more directions. Mechanical guides such as railings or fences thatcan be put in place to assist the user in guiding the tool may limitmovement or take time to set up, and these guides may not supportcomplex paths.

SUMMARY

Apparatuses, systems and methods of the present disclosure facilitateguiding a tool with precision and flexibility. In some embodiments, thesystem includes a rig or frame with a stage that may be positioned onthe surface of a piece of material such as wood. The tool can beelectrically or mechanically coupled to the frame, and the frametogether with the tool can be passed over the material. The system caninclude sensors, cameras or positioning logic to determine the tool'sposition on the material and accurately move (or provide instructionsfor a user to move) the frame, stage, or tool to a desired coordinate onthe material.

At least one aspect is directed to a method for providing a design tofacilitate performing a task on a material. The method can include adata processing system that receives a selection of a standard design.The method can receive a customization parameter corresponding to anaspect of the standard design which can indicate a modification to thestandard design. The method can generate a custom design based on thestandard design and the customization parameter. The method candetermine or select a material associated with the second design. Themethod can order the one material. The method can transmit the customdesign to a user device. The user device may include at least one of acutting tool, drawing tool, and a computing device.

At least one aspect is directed to a system for providing a design tofacilitate performing a task on a material or to create an object. Thesystem can include a data processing system configured to receive aselection of a standard design. The data processing system can beconfigured to receive a customization parameter corresponding to anaspect of the standard design. The customization parameter can indicatea modification to the standard design. The data processing system cangenerate a custom design based on the standard design and thecustomization parameter. The data processing system can determine orselect at least one material to build at least part of the customdesign. The data processing system can order the at least one material.The data processing system can transmit the custom design to a userdevice, the user device being at least one of a cutting tool, drawingtool, and computing device.

In some embodiments, the method or the system can include a tool havinga control system. The control system can be configured to implement thecustom design to create an object. The custom design can be included ina computer program that when executed by a processor causes theprocessor to control the tool to cut or mark the material as indicatedby the custom design, or where the tool can auto correct or provide anindication to correct deviations from a path indicated by the customdesign.

At least one aspect is directed to a computer readable storage mediumhaving instructions to facilitate performing a task on a material or tocreate an object. The instructions can include instructions to receive aselection of a standard design. The instructions can includeinstructions to receive a customization parameter corresponding to anaspect of the standard design. The customization parameter can indicatea modification to the standard design. The instructions can includeinstructions to generate a custom design based on the standard designand the customization parameter. The instructions can includeinstructions to determine or select at least one material to build atleast part of the custom design. The instructions can includeinstructions to order the at least one material. The instructions caninclude instructions to transmit the custom design to a user device, theuser device being at least one of a cutting tool, drawing tool, andcomputing device.

At least one aspect is directed to a method for locating a devicerelative to a surface of a material. The method can include scanning thesurface of the material using a camera coupled with the device. Themethod obtains at least one image generated by the scan and processesthe at least one image to identify variations in the material. Themethod generates a map of the material based on the variations in thematerial. The method rescans the surface of the material to obtain atleast one second image. The method compares the at least one secondimage with the map to determine a position of the camera or the devicerelative to the surface of the material.

At least one aspect is directed to a system for locating a devicerelative to a surface of a material. The system can include a cameracoupled to the device configured to scan the material and generate atleast one image. The system can include a processor configured toprocess the at least one image to identify variations in the material.The processor can be configured to generate a map of the material basedon the variations in the material. The processor can be configured torescan the surface of the material to obtain at least one second image.The processor can be configured to compare the at least one second imagewith the map to determine a position of the camera or the devicerelative to the surface of the material.

At least one aspect is directed to a method for locating a devicerelative to a surface of a material. The method can scan the surface ofthe material to generate a map of the material based on variationsidentified in the scan. The method can identify a design plan and relatethe design plan to the map of the material or overlay the design plan onthe map of the material. The method can position the device near thesurface of the material to perform a task corresponding to the designplan. The method can image a portion of the material proximate to thedevice to generate an image. The method can determine a position of thedevice based on comparing the image with the design plan relative to themap or the map overlaid with the design plan. The method can includeadjusting the position of the device based on the comparison (e.g., tofollow the design the plan). In some embodiments, the method candetermine that the position of the device deviates from a design path ofthe design plan. The method can adjust or automatically correct thedevice or the position on the material of the device or a cutting ordrawing tool of the device using at least one of a servomechanism,eccentric, actuation mechanisms, and stepper motors. In someembodiments, the method can automatically correct the position inresponse to the determination, while in some embodiments the method canadjust the position of the device to follow the design plan.

At least one aspect is directed to a system for locating a devicerelative to a surface of a material. The system can include a framecoupled with the device. The system can include a camera coupled to theframe or the device. The camera can be configured to scan the surface ofthe material to generate a map of the material based on variationsidentified in the scan. The system can include an automatic correctiondevice. The automatic correction device can be configured to adjust theposition of at least one of the device, a cutting tool, and a drawingtool relative to the surface of the material. The automatic correctiondevice can include at least one of a servomechanism, eccentric,actuation mechanisms, and stepper motors. The system can include acomputing device communicatively coupled with the camera and theautomatic correction device. The computing device can identify a designplan and relate the design plan to a map of the material, or overlay thedesign plan on a map of the material. The computing device can positionthe device near the surface of the material to perform a taskcorresponding to the design plan. The computing device can image aportion of the material proximate to the device to generate an image.The computing device can determine a position of device based on acomparison of the image with the map overlaid with the design plan. Thecomputing device can determine that the position is off a design path ofthe design plan. The computing device can instruct the automaticcorrection mechanism to adjust the position of the device or a cuttingor drawing tool of the device. The computing device can give thisinstruction responsive to the determination.

At least one aspect is directed to a method for performing a task on amaterial. The method can map a material. The method can obtain a designand relate the design to a map of the material or overlay the design ona map image to create a design path. The method can identify a positionof a tool relative to the material based on the map and design. In someembodiments, the method can display, on a display device communicativelycoupled to the tool, the position of the tool and the design path.

In some embodiments, the method can map the material by placing a markeron the material that increases variations that can be detected by acamera. The marker can include at least one of a sticker, sticker with abarcode, tape, drawing, ink, pattern, random drawing or pattern, andlight beam. The method can scan the material with the camera to obtainat least one image of a portion of the material. In some embodiments,the method can obtain two images of the material and stitch the imagestogether to generate a cohesive map of the material.

In some embodiments, the method can identify a second position of thetool and compare the second position with the design path. In someembodiments, the method can determine, based on the comparison, that thesecond position is not on the design path and move the position of thetool to a third position that corresponds with the design path. In someembodiments, the method can move the position by adjusting at least oneof a servo motor, stepper motor, and eccentric mechanism to move theposition of the tool. In some embodiments, the method adjust the z-axisposition of a tool to stop the performance of an aspect of the task onthe material. For example, the method may position the tool above thesurface of the material.

In some embodiments, the design is provided by an online design store.The method can receive a selection of the design and customize theselected design based on user input.

At least one aspect is directed to a method for providing a design forperforming a task on a material. The method can receive a selection of adesign and at least one customization parameter. The method can generatea second design corresponding to the selected design and at least onecustomization parameter. The method can determine at least one materialfor use with the second design. The method can order the at least onematerial.

At least one aspect is directed to a hybrid positioning method forpositioning a tool relative to the surface of a material. The method candetermine the location of the tool and a desired location for the tool.The method can then position the tool using a first positioning methodthat is capable of adjusting, moving, or positioning the tool to withina first accuracy, e.g., to within first maximum range and first minimumrange (e.g., plus or minus 5 inches of the desired location). The methodcan further position the tool using a second positioning method capableof adjusting, moving, or positioning the tool to a position to within asecond accuracy, e.g., to within a second maximum range and secondminimum range (e.g., plus or minus 0.25 inches of the desired location).In some embodiments, the first and second positioning methods aredifferent. In some embodiments, the first positioning method includeshuman positioning and the second positioning method includes automaticcomputer positioning using at least one of servo motors, stepper motors,linkage actuators, eccentrics, and actuation mechanisms. In someembodiments, the first minimum range is substantially similar to thesecond maximum range. In some embodiments, the second accuracy issubstantially more accurate than the first accuracy.

At least one aspect is directed to a system for performing a task on amaterial. The system can include a frame configured to receive a tool.The system can include a camera coupled to the frame. The system caninclude a display coupled to the frame. The system can include acomputing device communicatively coupled to the display and the camera.

The system may include a digital camera attached to the rig or frame.The digital camera can capture images used to detect the position of therig and stage on the material. In some embodiments, the digital cameraand associated control circuitry or control logic can build a map of apiece of material and track the location of the rig and stage on themap. The system may include a tool mounted on the stage that can performwork on the surface of the material including, e.g., cutting, drilling,sanding, printing, sewing, welding or other tasks.

In some embodiments, the system controls the location of the stage, orany attached tool, in accordance with a design or plan. For example, thesystem may control the location of the tool relative to the material andthe design in response to a sensed position. In some embodiments, a userof the system may free hand a design while the system automaticallyadjusts the stage and associated tool to match the design plan, whichmay eliminate or minimize human error. In some embodiments, the systemmay control a router which can be used to cut wood or other materials.

The tool can receive processing input received from the digital camerato determine the location of the rig relative to the material. Forexample, computer vision (“CV”) or sensor based techniques mayfacilitate determining the location of the rig relative to the material.

At least one aspect is directed to a method of facilitating performanceof a task on a surface of a material with a user device. The user devicemay include at least one of a cutting tool and a drawing tool. Themethod may include scanning the surface of the material to obtain firstscanned data (e.g., sensor data) of the surface of the material. Thefirst scanned data may indicate a map of the surface of the material.For example, the obtained scanned data may include a map of the surfaceof the material generated based on the scan of the surface of thematerial. At least one of a sensor and a second sensor coupled with theuser device can scan the surface of the material to obtain the firstscanned data. For example, a camera or other optical device may scan thesurface of the material to obtain first scanned image data. In anotherexample, an ultrasonic range finder can scan the surface of the materialor work area to obtain first scanned data. In some examples, the secondsensor can be mechanically coupled to the user device, while the sensormay not be mechanically coupled to the user device, such as a standalone digital camera or any other sensor configured to obtain firstscanned image data. The method can include least one of the sensor andthe second sensor scanning at least a portion of the surface of thematerial to obtain second scanned data or second image data. The methodcan include a processor evaluating the first scanned data and the secondscanned data to determine a position of one of the sensor and the secondsensor relative to the surface of the material. The method can includethe processor determining a position of at least one of the cutting toolof the user device and the drawing tool of the user device relative tothe surface of the material. The processor can determine the positionbased on the position of one of the sensor and the second sensorrelative to the surface of the material.

In some embodiments, the method can include generating the first scanneddata by stitching (e.g., joining or merging) a plurality of scanned datatogether to generate a cohesive map of the surface of the material.

In some embodiments, the method can include displaying on a displaydevice a map image overlaid with an indication of a position of at leastone of the cutting tool and the drawing tool relative to the surface ofthe material. The indication of the position can be overlaid based onthe first scanned data and the second scanned data.

In some embodiments, the method can include marking the surface of thematerial with a marker such as a sticker, ink, paint, graphite, a lightbeam, pencil mark, a barcode, tape, a drawing, or a pattern. The methodcan include identifying a variation in the material based on acharacteristic of the marker.

In some embodiments, the method can include identifying a design planfor the surface of the material. The method can include relating thedesign plan to at least one of the first scanned data and the secondscanned data.

In some embodiments, the method can include marking the surface of thematerial with an indication (e.g., tape, sticker, ink, paint, lightbeam, barcode, etc.) of the design plan. The method can include at leastone of the sensor and the second sensor scanning the surface of thematerial with the indication of the design plan. The method can includea processor identifying the design plan.

In some embodiments, the method can include a communication interfaceobtaining the design plan for the surface of the material. The methodcan include selecting the design plan via an online design store. Themethod can include modifying the design plan subsequent to selecting thedesign plan. In some embodiments, the method can include obtaining anindication of the design plan for the surface of the material via a userinterface of the user device.

In some embodiments, the method can include comparing a position of theuser device to a design plan. Responsive to the comparison, the methodcan include adjusting a position of at least one of the cutting tool andthe drawing tool of the user device. The method can adjust the positionof at least one of the cutting tool and the drawing tool based on theposition of the user device and based on the design plan. In someembodiments, the method can include adjusting the position of at leastone of the cutting tool and the drawing tool using an eccentricmechanism of the user device. For example, a processor may cause a motorcoupled to the cutting tool or drawing tool via an eccentric basedlinkage to adjust the position of the cutting tool or drawing tool.

In some embodiments, the method can include determining that a positionof the user device deviates from a design plan. The method can includecorrecting a position of at least one of the cutting tool and thedrawing tool of the user device. The position can be corrected based onthe position of the user device and based on the design path of thedesign plan.

In some embodiments, the method can include identifying a design planfor the surface of the material. The method can include a processordetermining a first task to be performed on the surface of the material.The processor can determine the first task based on the design plan andthe position of at least one of the cutting tool of the user device andthe drawing tool of the user device relative to the surface of thematerial. The method can include at least one of the cutting tool of theuser device and the drawing tool of the user device performing the firsttask.

In some embodiments, the method can include a processor determining asecond task to be performed on the surface of the material. Theprocessor can determine the second task based on the design plan and asecond position of at least one of the cutting tool of the user deviceand the drawing tool of the user device relative to the surface of thematerial. The method can include at least one of the cutting tool of theuser device and the drawing tool of the user device performing thesecond task.

In some embodiments, the method can include scanning a work areacomprising the surface of the material. For example, one of the sensorand the second sensor can scan the work area, or a third sensor can scanthe work area (e.g., the room in which the material is placed, the workbench or table on which the material is placed, or a ceiling, wall orfloor proximate to the material). The method can include the processortracking a marker of the work area via the sensor, second sensor or thethird sensor. The marker may not be on the surface of the material;e.g., the marker may be adjacent to the material, above the material(e.g., ceiling), or on the wall. The method can include the processordetermining a position of at least one of the cutting tool of the userdevice and the drawing tool of the user device relative to the surfaceof the material. the processor can determine the position based on theposition of one of the sensor and the second sensor relative to themarker of the work area.

At least one aspect is directed to a system for facilitating use of auser device. The user device can include at least one of a cutting tooland a drawing tool. In some embodiments, the system includes the atleast one of the cutting tool and the drawing tool. The system caninclude at least one of a sensor and a second sensor coupled with theuser device. At least one of the sensor and the second sensor can beconfigured to scan the surface of the material to obtain first scanneddata of the surface of the material. At least one of the sensor and thesecond sensor can be configured to scan at least a portion of thesurface of the material to obtain second scanned data. The system caninclude a processor coupled to at least one of the sensor and the secondsensor. The processor can be configured to obtain the first scanned dataand the second scanned data to determine a position of one of the sensorand the second sensor relative to the surface of the material. Theprocessor can be configured to determine a position of at least one ofthe cutting tool of the user device and the drawing tool of the userdevice relative to the surface of the material. The processor candetermine the position based on the position of one of the sensor andthe second sensor relative to the surface of the material.

In some embodiments, the processor can be configured to generate thefirst scanned data by stitching a plurality of scanned data together(e.g., a plurality of scanned image data) to generate a cohesive map ofthe surface of the material.

In some embodiments, the system can include a display device coupled tothe processor. The processor can be configured to cause the displaydevice to display a map image overlaid with an indication of a positionof at least one of the cutting tool and the drawing tool relative to thesurface of the material. The processor can display the map image basedon the first scanned data and the second scanned data.

In some embodiments, the system includes a marker configured to mark thesurface of the material. The marker can include at least one of asticker, ink, paint, graphite, a light beam, pencil mark, a barcode,tape, a drawing, and a pattern. For example, the marker may include aunique barcode sequence. The processor can be configured to identify avariation in the material based on a characteristic of the marker.

In some embodiments, the processor can be configured to identify adesign plan for the surface of the material. The processor can relatethe design plan to at least one of the first scanned data and the secondscanned data.

In some embodiments, where the surface of the material can be markedwith an indication of the design plan, at least one of the sensor andthe second sensor can scan the surface of the material with theindication of the design plan. The processor can be configured toidentify the design plan.

In some embodiments, the system includes a communication interface. Thecommunication interface can be configured to obtain the design plan forthe surface of the material.

In some embodiments, the system can include an online design store. Thecommunication interface can be configured to obtain the design planselected via an online design store. In some embodiments, the onlinedesign store can be configured to modify the design plan subsequent toreceiving an indication to select the design plan.

In some embodiments, the system can include a user interface. The userinterface can be configured to obtain an indication of the design planfor the surface of the material.

In some embodiments, the processor can compare a position of the userdevice to a design plan. Responsive to the comparison, the processor canadjust a position of at least one of the cutting tool and the drawingtool of the user device based on the position of the user device andbased on the design plan.

In some embodiments, the system can include an eccentric mechanism. Theeccentric mechanism can be coupled to a motor and at least one of thecutting tool and the drawing tool. The eccentric mechanism can beconfigured to facilitate adjusting the position of at least one of thecutting tool and the drawing tool.

In some embodiments, the processor can be configured to determine that aposition of the user device deviates from a design plan. The processorcan be configured to correct a position of at least one of the cuttingtool and the drawing tool of the user device. The processor can beconfigured to correct the position based on the position of the userdevice and based on the design path of the design plan.

In some embodiments, the processor can be configured to identify adesign plan for the surface of the material. The processor can beconfigured to determine a first task to be performed on the surface ofthe material. The processor can be configured to determine the firsttask based on the design plan and the position of at least one of thecutting tool of the user device and the drawing tool of the user devicerelative to the surface of the material. In some embodiments, theprocessor can be configured to cause at least one of the cutting tool ofthe user device and the drawing tool of the user device to perform thefirst task.

In some embodiments, the processor can be configured to determine asecond task to be performed on the surface of the material. Theprocessor can be configured to determine the second task based on thedesign plan and a second position of at least one of the cutting tool ofthe user device and the drawing tool of the user device relative to thesurface of the material. The processor can be configured to cause atleast one of the cutting tool of the user device and the drawing tool ofthe user device to perform the second task.

At least one aspect is directed to a non-transitory computer readablemedium comprising executable instructions that can be executed by aprocessor. The executable instructions can facilitate using a userdevice that can include at least one of a cutting tool and a drawingtool. In some embodiments, the instructions can include instructions toobtain first scanned data of the surface of the material. Theinstructions can include instructions to obtain the first scanned datavia at least one of a sensor and a second sensor coupled with the userdevice. The instructions can include instructions to obtain secondscanned data of at least a portion of the surface of the material. Theinstructions can include instructions to obtain the second scanned datavia at least one of the sensor and the second sensor. The instructionscan include instructions to evaluate the first scanned data and thesecond scanned data to determine a position of one of the sensor and thesecond sensor relative to the surface of the material. The instructionscan include instructions to determine a position of at least one of thecutting tool of the user device and the drawing tool of the user devicerelative to the surface of the material. The instructions can includeinstructions to determine the position based on the position of one ofthe sensor and the second sensor relative to the surface of thematerial.

In some embodiments, the instructions can include instructions toidentify a design plan for the surface of the material. The instructionscan include instructions to relate the design plan to at least one ofthe first scanned data and the second scanned data.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an illustrative example of an embodiment of an apparatus forautomatically guiding tools.

FIG. 2 is an illustrative example of an embodiment of an apparatus forautomatically guiding tools following a target path area and performinga task according to a planned design.

FIG. 3 is an illustrative block diagram of an embodiment of a system forautomatically guiding tools.

FIG. 4 is an illustrative flow chart of an embodiment of a method forautomatically guiding tools.

FIG. 5 is an illustrative flow chart of an embodiment of a method forautomatically guiding tools.

FIG. 6 is an illustrative example of an embodiment of an electronicdesign store that includes a plurality of electronic designs.

FIG. 7 is an illustrative example of an embodiment of ordering parts foran electronic design via an electronic workshop.

FIG. 8 is an illustrative example of an embodiment of providinginstructions to perform a task via an electronic workshop.

FIG. 9 is an illustrative example of an embodiment of an electronicdesign studio.

FIG. 10 is an illustrative example of an embodiment of a design plan.

FIG. 11 is an illustrative example of results of generated byembodiments of systems and methods of the present disclosure.

FIG. 12 is a front view of an illustrative example of an embodiment of aguided tool system including a router.

FIG. 13 is a front view of an illustrative example of an embodiment of aguided tool system.

FIG. 14 is a side view of an illustrative example of an embodiment of aguided tool system including a router.

FIG. 15 is a side view of an illustrative example of an embodiment of aguided tool system.

FIG. 16 is a rear view of an illustrative example of an embodiment of aguided tool system including a router.

FIG. 17 is a rear view of an illustrative example of an embodiment ofthe a guided tool system.

FIG. 18 is a top view of an illustrative example of an embodiment of aguided tool system including a router.

FIG. 19 is a perspective view of the bottom of an illustrative exampleof an embodiment of a guided tool system.

FIG. 20 is a bottom view of the internal stage and pivot components ofan illustrative example of an embodiment of a guided tool system.

FIG. 21 is a perspective view of an illustrative example of anembodiment of a guided tool system.

FIG. 22 is a perspective view of an illustrative example of anembodiment of a guided tool system.

FIG. 23 is a illustrative example of a graphical user interface of anembodiment of a guided tool system.

FIG. 24 is a block diagram illustrating a general architecture for acomputer system that may be employed to implement various elements ofthe systems and the methods disclosed herein, in accordance with animplementation.

FIG. 25 shows an illustration of an example network environmentcomprising client machines in communication with remote machines inaccordance with an implementation.

FIG. 26 is an illustration of an example system of a design store via acomputer network in accordance with an implementation.

FIG. 27 An example of a shape cut out of wood using a device illustratedin FIGS. 12-20. FIGS. 12-20 illustrate a position-correcting tool. Thedevice consists of a frame and a tool (in this case a router) mountedwithin that frame. The frame is positioned manually by the user. Thedevice can adjust the position of the tool within the frame to correctfor error in the user's coarse positioning.

FIG. 28 Map: A scanned map with a plan registered to it. The red dottedline indicates a path that a user could conceivably follow to cut outthe shape.

FIG. 29 Markers: A sequence of markers, with values 1000 to 1006, suchas would be printed on a strip of tape.

FIG. 30(a) Positioning linkage: The mechanics of our linkage can beconceptualized as two shafts (unfilled circles) rotating arms that areconnected with pivots (filled circles) to a rigid stage (shaded region)that holds the spindle (cross). To properly constrain the degrees offreedom of the stage, one arm is directly connected to the stage whilethe other is connected via an additional hinge.

FIG. 30(b) The design is achieved in practice using eccentrics, whichare circular disks rotating about off-center shafts to produce lineardisplacement in fitted collars.

FIG. 31 Freeform motion paths: Each box illustrates a case in which adifferent path (described below) is used, due to the higher-preferencepaths being infeasible. In each box, the cross is the current positionof the tool, the circle is the range of the positioning system, thegreen dot is the target position, and the green path is the selectedpath.

FIG. 32 User interface: This display shows the shapes of the plan (bluepolygons); the path that the tool is actually following, which is thoseshapes offset by the tool's radius (dotted line); the tool's currentposition (cross); the area cut by the tool (shaded area); and the rangeof the tool's position correction (black circle). As long as the userkeeps the tool path within the correction range, the tool should be ableto follow the plan.

FIG. 33 Results: Several shapes cut out from wood, sheet metal,paperboard, and polycarbonate plastic.

FIG. 34 Accuracy: A scan of a plotted pattern (6″ wide) shown with thedesign that was used to create it (red). The inset shows an expansion ofthe area of worst error, with the addition of the line fit to the scanfor analysis (green). Note that even here the error is only on the orderof the width of the pen.

DETAILED DESCRIPTION

The present disclosure relates generally to systems and methods forworking on a surface such as woodworking or printing. More specifically,the present disclosure relates to determining the location of a tool inreference to the surface of a material and using the location to guide,adjust or auto-correct the tool along a predetermined path or designplan such as, e.g., a cutting or drawing path. In some embodiments, thereference location may correspond to a design or plan obtained via anonline design store.

Apparatuses, systems and methods of the present disclosure relate toguiding tools to perform a task on a target material. In someembodiments, a system may automatically guide a tool to perform a task.For example, in some embodiments, the present disclosure provides ahandheld system that can identify the location of a tool, or a rig thatcontains a tool, relative to the material being worked. In someembodiments, the device may be non-handheld; e.g., the device may be ona movable platform such as a remote control platform, robotic platform,or another type of movable platform that may or may not be controllable.The system may adjust the location of the tool (or provide instructionsfor the adjustment of the location of the tool) based on or responsiveto the current location of the tool and a desired location correspondingto a design plan. In some embodiments, the system includes a handhelddevice with a working instrument capable of being operated by hand whichcan make precision adjustments of the working instrument location basedon spatial location to provide an accurate path which the workinginstrument travels.

In some embodiments, systems and methods disclosed herein can include alocation detection system or perform one or more location detectiontechniques that can detect the current location or position of a tool ona target material accurately, robustly, or with low latency. Forexample, a video or sill image camera coupled to the tool andaccompanying control circuitry may be used to scan the surface of thematerial and process the scanned data or scanned image data to generatea digital map of the surface of the material in advance of performing atask on the material. When the tool is brought near the surface of thematerial during performance of a task on the material, the camera maytake a second image and compare the second image with the digital map todetect a location of the tool relative to the material.

In some embodiments, various location detection techniques may be usedincluding, e.g., integrating wireless position sensing technologies,such as RF, near field communication, Bluetooth, laser tracking andsensing, or other suitable methods for determining the position of thetool and facilitating guiding or adjusting the position of the tool toperform a task. In some embodiments, the system may include a hybridlocation detection system that employs two or more location detectiontechniques to determine the location of the tool. For example, eachlocation detection technique may include orthogonal strengths andweaknesses, but when combined, can detect a location with high accuracyand low latency. For example, a first location detection technique maybe high accuracy but low frequency (e.g., a sensor configured to obtaindata once per second that accurately determines the position but hashigh latency). The first location detection technique may be combinedwith a second location technique that includes a sensor that provideslocation information with high frequency and high accuracy but provideslimited information (e.g., an optical mouse sensor that is highfrequency and high accuracy but only provides dead reckoning includingdirection and speed of movement rather than the location of the tool ina global context). In an illustrative example, the hybrid locationsystem may use a camera to obtain an image to determine a position ofthe tool on the surface of the material accurately, and then use anoptical mouse sensor to track the change of the position until the nextframe of the image comes in. In this example, the second locationtechnique using the optical mouse sensor may not provide all locationtracking because integrating velocity to determine a position mayaccumulate error over time, or the device would not be able to determinea location if the device was picked up and put it down at a differentposition.

In some embodiments, to generate the map in advance of the cutting ordrawing operation, a user may sweep the surface of a material with acamera until the camera has obtained images of all, substantially all,or a portion of the surface of the material or desired portion thereof.The system may obtain these images and stitch the images together toproduce a cohesive map. Generating the digital map image and detectingthe location may include one or more image processing techniques,pattern recognition techniques, localization techniques, computer visiontechniques, for example. For example, the system may identify thatpoints A and B in a first image correspond to point C and D in a secondimage and accordingly stitch the two images. For example, on a woodsurface, the system may identify variations, bright spots, colorvariations, marks, or wood grains in the image and compare them with thedigital map to determine a location. In another example, the system mayfurther use corners, sides, lighting patterns, or other signal capableof identifying a location.

The material can be marked to facilitate mapping of the surface of thematerial or detection of a position of the tool on or proximate to thematerial. For example, the surface of a material, such as metal orplastic, may not contain sufficient identifying marks to accuratelydetect location. Distinguishing marks or markers can be added to thematerial to facilitate location detection techniques such as patternrecognition or image processing. The markers can include any type ofmaterial, ink, tape, light, laser, carving, engraving, temperaturegradient, invisible ink (e.g., ink only visible under ultraviolet orother wavelengths of light) capable of facilitating a location detectiontechnique. In some embodiments, the marker includes a tape that can beapplied to at least a portion of the surface of the target material. Thetape may include symbols such as a unique barcode, design, pattern,colors, engravings, raised bumps or depressions, for example. In someembodiments, the marker may include a user randomly marking on thetarget material with a pen, pencil, ink, invisible ink, paint, crayons,or any other marking or writing instrument.

In addition to generating a digital image of the surface of thematerial, in some embodiments, the system may identify a cutting ordrawing design plan on the surface of the material. A design plan mayinclude any cutting or drawing a user of the system desires. Forexample, the design plan may include a freehand design, tracing,picture, image, design generated using computer-aided design (“CAD”)software, purchased design, or a purchased electronic design. The designplan can be a design of an object that the tool can create by performingan operation on the material, such as a design for a table that can becut from at least one piece of wood.

The system can incorporate the design plan with the map image orotherwise relate the design plan with a map of the surface of thematerial or overlay the design plan on the map image. In someembodiments, the design plan may be drawn on the surface of the materialbefore or after generating the initial map of the material (e.g., usinga special pen whose ink can be detected by the system using ultravioletor other wavelengths). If, for example, the surface of the materialincludes a design (e.g., a cutting design or drawing design) during theinitial mapping phase, the system may process the image to identify thedesign plan and include it in the digital map of the surface of thematerial. If the design is drawn or otherwise marked on the surface ofthe material after generating the initial map, the system may obtainimages of the material with the design by using the camera to rescan ortake new images of the material. If the design is drawn or otherwisemarked on the surface of the material before generating the initial map,the system may identify the design as a cutting or drawing design planor a user may indicate to the system that the identified design is acutting or drawing design plan.

In some embodiments, a digital design may be added to digital map of thesurface of the material without physically adding the design to thesurface of the material or otherwise marking the actual material with adesign. For example, the digital design may be generated on a computerand may include a CAD drawing or any other type of drawing (e.g., JPEG,BMP, or GIF). Using CAD software, for example, a user may modify the mapimage by adding the design plan. Any other suitable software may be usedto incorporate a design plan onto the map image or otherwise relate adesign plan with a map of the surface of the material (e.g., data thatindicates a location of the design plan used to facilitate theperformance of a task on a material). After registering the design onthe digital map or digital map image, the system may provide thecorresponding digital map data or digital image data with the designplan to the tool. In some embodiments, the system may display the mapimage with the design on a display device of the tool to facilitate auser performing a task on the material. In some embodiments, the toolmay perform the task in accordance with the design plan withoutdisplaying the design plan (e.g., the tool may automatically perform anaspect of the task or the tool may not include a display device).

During the cutting or drawing operation, a user may place the tool on ornear the surface of the material. Upon placing the tool on the surface,the camera may re-scan or take an image of a portion of the surface ofthe material. The image may correspond to a portion of the material thatis at a location different from the cutting or drawing tool. The systemmay determine the location of the tool relative to the surface of thematerial or the design plan by comparing identifying marks in the newimage with identifying marks in the map image generated in advance ofthe performance of the task on the material. The camera may be mountedor otherwise coupled to the tool such that image capturing aspect of thecamera (e.g., lens) is directed on the surface of the material at afixed and known vector from the cutting tool (e.g., drill bit). Byfocusing the camera away from the cutting tool, the system may obtainimages that are relatively clear of debris caused by cutting that mayobfuscate the markers used for detecting a location.

The system may then compare the new images with the digital map of thesurface of the material to determine a precise location of the tool. Forexample, the portion of the digital map corresponding to the top rightcorner may include a set of identifying marks. Upon obtaining the newimage, the system may identify those same identifying marks anddetermine that those marks correspond to the top right corner of the mapimage. The system may then determine, based on the camera vector offset,the precise position of the cutting or drawing tool.

In some embodiments, the system may display, in real time, the preciseposition of the cutting or drawing tool on a display device (e.g., adisplay device of a tool or a remote display device communicativelycoupled to the system or tool). The system may indicate the position onthe display via an “X”, circle, dot, icon, or using any other indicationto signal a current position of the tool. In some embodiments, the toolmay overlay the indication of the current position on the design plan orcutting path. In some embodiments, the tool may overlay the indicationof the current position on the map image. In some embodiments, the toolmay overlay the indication of the current position on the map image thatincludes an overlay of the design plan.

In some embodiments, the system may include a positioning system thatadjusts or moves the tool based on a detected location of the tool and adesign plan. In some embodiments, the system can use various locationdetection techniques to detect the location of the tool, and use variouspositioning techniques to move or adjust the location of the tool. Forexample, the system can include a hybrid positioning system thatincludes two or more positioning systems to position a tool. Upondetermining the location of the tool and a desired location for thetool, the first positioning system may be configured to move, adjust, orposition the tool over a relatively large range (e.g., move the tool toanywhere on the work area or surface of the material), but withrelatively low accuracy. The second positioning system may be configuredto move, adjust, or position the tool over a relatively short range(e.g., within a radius of 5 inches of the current location of the tool),but with high accuracy. In some embodiments, the first (e.g., coarse orrough) positioning system may include a human positioning a tool on thesurface of a material, and the second (e.g., fine or precise)positioning system may include positioning the tool using servo motors,stepper motors, actuation mechanisms, or eccentrics, for example. Thefirst positioning system can include non-human positioning systems suchas, e.g., robotic systems, remote control systems, or Global PositioningSystem (“GPS”) enabled devices.

For example, the first positioning system may include a long-range,low-accuracy positioning mechanism that is configured to move, adjust orcorrect the position of the tool based on the design plan. The secondpositioning system may include a short-range, high-accuracy positioningmechanism that can move, adjust or correct the position of the tool,within a maximum range, more precisely than the first positioningmechanism based on the design. In an illustrative and non-limitingexample, the first positioning system may include, e.g., a maximum rangethat includes the range of the entire work area (e.g., the areacomprising the surface of the material on which the task is to beperformed), and include an accuracy of +/−0.25″. The second positioningsystem may include, e.g., a maximum range of 0.5″, with an accuracy of+/−0.01″. The maximum ranges and accuracy of the first and secondpositioning systems may include other range and accuracy values thatfacilitate systems and methods of hybrid positioning. In variousembodiments, range and accuracy may refer to one-dimensional accuracy(e.g., along an X-axis), two-dimensional accuracy (e.g., X-Y axes) orthree-dimensional accuracy (e.g., X-Y-Z axes).

The first positioning system may be less accurate and include apositioning system where the maximum range is substantially greater thanthe maximum range of the second. For example, the first positioningsystem can move the tool from anywhere on the surface of the material towithin +/−0.25 inches of a desired location, while the secondpositioning system can be configured to move the tool up to 5 inchesfrom a current position, but with an accuracy of 0.01 inches. In someembodiments, the hybrid positioning system may include a plurality ofpositioning systems that are each configured to accurately determine alocation and then position the tool to within a certain distance rangesuch that, when the positioning systems are used together, the systemcan precisely determine a location and position or adjust the toolaccordingly. In some embodiments, the maximum range of each subsequentpositioning system may be equal to or greater than the accuracy of theprevious positioning system. In an illustrative example, a firstpositioning system may be able to position the tool on the surface ofthe material with, e.g., a maximum range corresponding to the size ofthe surface of the material, and with an accuracy of +/−1 inch. A secondpositioning system may be able to position the tool on the surface ofthe material within a maximum of range of 2 inches with an accuracy of+/−0.1 inch. A third positioning system may be able to position the toolanywhere within a maximum range of 0.2 inches with an accuracy of+/−0.01 inch. Therefore, in this example, by using all three positioningsystems together, the hybrid positioning system can precisely positionthe tool within a maximum range that includes the entire surface of thematerial or work area with an accuracy of +/−0.01 inch.

In some embodiments, the system may include automatic adjustment,guiding or error correction to facilitate performing a task inaccordance with a design plan. The system may use various types ofadjustment, guiding or correction mechanisms, including, e.g.,eccentrics, servomechanisms, stepper motors, control loops, feedbackloops, actuators, nut and bolt-type mechanisms. For example, the systemmay include eccentrics or servomotors coupled to a frame and the cuttingtool configured to adjust the position of the cutting tool relative tothe frame. Upon determining the current position of the cutting tool,the system may compare the current position with the desired position.The system may then guide the tool in accordance with the design plan.In some embodiments, when the system determines there is a discrepancybetween the current position and the desired position, or the currentposition or trajectory deviates from the design plan, the system mayadjust the cutting tool in accordance with the design plan. For example,the system may identify a cutting path or vector of the tool and thedesign plan and adjust the cutting tool such that the next cut is inaccordance with the design plan.

The system may utilize various automatic correction mechanisms. In someembodiments, the system may include eccentrics configured to adjust theposition of the cutting tool. For example, using two eccentrics, thesystem may adjust the position of the cutting tool in two dimensions.Eccentrics may include any circular widget rotating asymmetrically aboutan axis. For example, an eccentric may include a circle rotating aboutnon-central axis. The eccentrics may be coupled to the cutting tool andthe frame and be configured to adjust the position of the cutting toolrelative to the frame, which may adjust the position of the cutting toolrelative to the surface of the material. In some embodiments, the systemmay utilize a screw with a nut to change rotational motion to lineardisplacement to correct or adjust tool positioning.

In some embodiments, the system may include orientation control based onthe type of cutting tool. For example, if the cutting tool is a sabersaw that cannot be adjusted perpendicularly, the system may adjust theorientation or angle of the saber saw in accordance with a design plan.The system may include actuators configured to adjust the tilt or angleof the saw.

The system can control the z-axis of the cutting or drawing tool. Bycontrolling the z-axis of the cutting or drawing tool, the system maystart and stop cutting or drawing in accordance with a design plan. Forexample, if the cutting tool is beyond a correctable distance away fromthe design plan (e.g., outside the radius of automatic compensation),the system may stop the cutting by adjusting the z-axis position of thecutting tool (e.g., lifting the drill bit off the wood). When the userbrings the cutting tool back to within the radius of automaticadjustment, the system may automatically adjust the z-axis position ofthe cutting tool such that cutting commences again (e.g., lowers thedrill bit into the wood). The radius or range of compensation maycorrespond to a positioning system of the localization system. Forexample, if the localization system includes a hybrid positioning systemthat includes a large range and short range positioning system, theradius of compensation may correspond to the short range positioningsystem. In some embodiments, controlling the z-axis position of the toolmay facilitate making 2.5 dimension designs. For example, a design planmay indicate z-axis information corresponding to the surface of thematerial.

In some embodiments, the system may indicate to the user that thecutting tool is on the design path or within the range of compensationsuch that the system may correct the position of the cutting tool. Insome embodiments, the system may indicate to the user that the cuttingis not on the design path or not within the range of compensation. Thesystem may further indicate to the user to correct the position of thecutting tool or a direction in which to move the cutting tool to bringit on the design path or within the range of compensation. The systemmay provide one or more indication visually via the display device,using light emitting diodes or other light sources, audio signal, beeps,chirps, or vibrations. In some embodiments, an indication that the toolis deviating from the design path beyond an acceptable range may includeautomatically shutting off the cutting machine or adjusting the z-axisof the cutting or drawing tool such that it stops performing a task onthe material. In some embodiments, the system may indicate the designpath on the material of the surface itself by, e.g., shining a beam oflight indicating to the user where the design path is and where toproceed. For example, upon determining the error, the system may shine abeam indicating to the user how much to adjust to the tool in order tobring the position of the tool to within the range of automaticcompensation or on the design path.

In some embodiments, a plurality of cutting or drawing tools may be usedwith the system including, e.g., saber saw, jig saw, router, or drill.The system may be configured such that users may use various aspects ofthe present disclosure with various cutting or drawing tools withoutmaking any adjustments to the tool or minor/temporary adjustments. Forexample, the system may include a frame, camera, display device, andcomputing device. The frame may be configured such that a cutting toolmay be placed in the frame. The camera may be coupled to the frame ormay be attached to the cutting tool. Upon placing the camera, the systemmay automatically or manually be calibrated such that the system obtainsthe vector offset between the camera and the cutting or drawing tool(e.g., the drill bit).

In some embodiments, the system may include a freestanding deviceconfigured to perform mapping and localization functions and indicate toa user the current position of the device. In some embodiments, thefreestanding device may be attached to a cutting tool or drawing tool.In some embodiments, the freestanding device may not provide automaticcorrection functionality. In some embodiments, the freestanding devicemay include a display or a camera. In some embodiments, the freestandingdevice may determine a design path and detect when the tool is off thedesign path. The freestanding device may indicate the error by, forexample, the display, shining a light on the surface of the material,audio signals, or voice narration.

In some embodiments, and as further described herein, systems andmethods of the present disclosure include an online design store. Thedesign store may be configured to allow a user to select a design for aproject (e.g., building a table), customize the design, facilitateordering material or other parts to create the design or build theproject, provide instructions or training on how to cut the design orbuild the project, or transfer the electronic design to the cuttingsystem or tool or incorporate the design on the digital map of thematerial to create a design path or cutting path.

For example, a user of the online design store may browse a plurality ofdesigns for a table, select a design, and then customize the design(e.g., length and width of table, number of drawers, aesthetic style).The online design store may allow for various design customizationoptions and facilitate customization by automatically altering variouscuts (e.g., corners, sides, reposition tongue-n-groove joint), materialsizes and design (e.g., to account for structural integrity of newdesign, extra support structure, sturdier material, stronger couplingmechanisms such as screws, bolts, nuts, glue). The online design storemay then identify the necessary supplies, including, e.g., the size ofthe material from which the design may be cut, number and types ofscrews, fasteners, glue, paint, varnish, supporting materials, hinges,or handles. For example, the online design store may automatically mapthe design onto material to maximize the usage of the material withoutwasting excess material. The online design store may further identifythe corresponding part numbers, brand names, or barcode of the supply.The design store may then suggest vendors of the material and facilitateordering the supplies from the material. For example, a user may orderthe supplies via the online design store and the online design store maytransmit the order to the vendor (e.g., a hardware supply store).Thereafter, the online design store may facilitate overlaying theelectronic design on the digital map of the material. In someembodiments, the system may obtain the electronic design from the onlinedesign store and incorporate the design on the digital map of thematerial. The electronic design can be stored as a computer program orapplication that can be downloaded to a computing device (e.g., tabletcomputer) that can be electrically or mechanically coupled to, orseparate from, the tool and associated frame or guiding apparatus.

The online design store may include an online community. An onlinecommunity may include members of the online design store, authorizedusers of the online design store, or any other users that can access theonline design store. Online users or members of the online community mayreview designs, provide a design rating, or participate in chat rooms orotherwise communicate with other online users.

Referring to FIG. 1, an illustrative example of an embodiment of anapparatus for guiding tools to perform a task is shown. In someembodiments, the device includes a frame and a tool (e.g., a router inthe example of FIG. 1) mounted within the frame. The frame may bepositioned manually by the user. The device can adjust the position ofthe tool within the frame to guide or adjust the tool in accordance witha design plan or to correct for error in the user's coarse positioning.The device may also include a display and be configured to map thetarget material and display it on the display. In some embodiments,markers on the target material (e.g., stickers) may facilitategenerating a map of the target material by providing differentiatingfeatures. The device may obtain a design or plan by downloading it froman online store. The device may display a map of the target materialwith the design that indicates the desired cutting pattern.

Referring to FIG. 2, an illustrative example of an apparatus forautomatically guiding tools following a target path area and performinga task according to a planned design is shown. In some embodiments, tofollow a complex path, the user of the device may need to only move theframe in a rough approximation of the path. In this example, the dottedline shows the path that the tool would take if its position were notadjusted; the solid line is its actual path, e.g., an outline of thesoutheastern United States. In this example, the user can grip the frameand guide the tool generally along the dashed line, and the tool canself-adjust to cut along the solid line. In some embodiments, the deviceautomatically adjusts the drill bit or other cutting tool based on theposition of the cutting tool and the desired position of the cuttingtool. In some embodiments, the user of the device may move the devicealong the dotted line 1210 in FIG. 2 (or the path 406 of FIG. 23), whilethe device automatically adjusts the cutting tool in accordance with thedesired design plan, such as the design plan 1205 of FIG. 2 For example,the device may identify or detect the current position of the cuttingtool relative to the target surface with the design. The device may thencompare the current position with the desired position of a design ormap and adjust the cutting tool.

Referring to FIG. 3, an illustrative block diagram of an embodiment of asystem for automatically guiding tools is shown. In some embodiments,the system 680 includes a smart device 681. The smart device 681 mayinclude at least one central processing unit (“CPU”) or processor 683,and may include software code 685 that performs one or more processes,at least one memory 687, or at least one display 689. The smart device681 may include a self-contained unit or the smart device 681 mayinclude components that are not self-contained or separated. Forexample, the display 689 may be tethered to the smart device 681 orintegrated into the housing of the smart device 681. In someembodiments, the smart device 681 may be integrated as part of thesystem 680 so that the system is a self-contained portable unit.

In various embodiments, the system 680 can include one or more sensorsto facilitate determining a location of the tool (e.g., IR, lasers,ultrasonic range finding, etc.). For example, and in some embodiments,the system 680 can include a camera 682 that can be used in combinationwith the smart device 681 to build a map 684 of the material to beworked on. The camera 682 may be coupled or attached to any tool 699 toprovide positioning for that tool 699. In some embodiments, the camera682 is coupled with a display 689 and CPU 683. For example, the camera682 may be part of a computer or smart device 681 that can be attachedor coupled to any tool 699. A software application or code 685 can beinstalled on a mobile smartphone and can utilize the camera, CPU,memory, and display of the smartphone. In some embodiments, one or moreaspect of the software or processing may be performed by a fieldprogrammable array device (“FPGA”) or a digital signal processor(“DSP”).

In some embodiments, the camera 682 can take images with a high-framerate. For example, the camera can scan the surface of the material toobtain scanned data or scanned image data. In some embodiments, thecamera may scan the surface of the material and a processor can processthe scan to generate scanned data that indicates a map of the surface ofthe material. This may facilitate location functions or mappingfunctions disclosed herein. The camera 682 can also take images with arelatively low-frame rate and the camera 682 can be coupled with one ormore optical sensors (e.g., sensors in optical computer mice). Theoptical sensors may provide low-latency dead reckoning information.These optical sensors may be used in conjunction with the camera 682.For example, the camera 682 may provide accurate global positioninformation a few times a second and appreciable lag, and the opticalsensors may be used to provide dead-reckoning information with low lagthat fills in the time since the last image was taken. In someembodiments, accelerometers may be used for dead-reckoning. The system100 may use multiple cameras to increase the accuracy or range ofcoverage when scanning, or to provide depth information.

In some embodiments, the system 100 is configured to build, generate orotherwise receive a map 684. In some embodiments, the map 684 may bebuilt using computer vision (“CV”) or sensors techniques. For example, aCV technique may be used to build a photo mosaic. A photo mosaic processmay include taking multiple photographs of different parts of the sameobject and stitching at least two of the photographs together to make atleast one overall image covering the entire object.

In some embodiments, the system 680 or processor may be configured toevaluate the scanned data using a technique that includes simultaneouslocalization and mapping (“SLAM”). SLAM may include using a sensor thatis communicatively coupled with a processor 683 and related software 685to build a map 684 of the material being worked on (or “targetmaterial”) while determining (e.g., simultaneously) the location of thetool 699 relative to the map 684. For example, after building at least aportion of the map, a camera 682 may capture images of the materialbeing worked. The images may be fed to and processed by the smart device681 to determine the location of the tool 699 or rig. The system 680 mayanalyze the captured images based on the map 684 to determine thelocation (e.g., geo location) of the camera 681 relative to thematerial. Upon determining the location of the camera 682, in someembodiments, the system 680 may identify that the location of the rig isa known or determinable offset from the position of the camera 682,which may be rigidly attached to the rig.

Various embodiments may use various other location processing anddetermining technologies including, e.g., integrating wireless positionsensing technologies, such as RF, near field communication, Bluetooth,laser tracking and sensing, or other suitable methods for determiningthe position of the tool 699 on top of the work piece. For example,ultrasonic, IR range finding, or lasers can be used to detect thelocation of the tool relative to a work area or surface of a material.The detected location of the tool can be provided to any other componentof the system 680 to facilitate guiding or adjusting the position of thetool in accordance with an embodiment.

In some embodiments, the system 680 may be configured to compute thelocation of the tool 699 relative to the rig using the currentorientations of the motor shafts. For example, the system 680 mayidentify the orientations of the motor shafts by homing them and thentracking one or more acts taken since the homing process. In someembodiments, the system 680 may use encoders could be used instead ofhoming as the encoders would be able to tell the orientations of theshafts directly. Through the offsets and calculations, the system 680can identify the location of the tool 699 or rig relative to thematerial being worked on. The captured images that can be analyzedagainst the map 684 may include, e.g., characteristics of the materialsuch as wood grains and deformations or may include markers placed onthe material. Various aspects of the mapping and location technologywill be described in more detail below.

In some embodiments, the system 680 may receive a design 686 ortemplate. For example, the smart device 681 may be configured to receivethe design 686 or template from a user of the system 680. The smartdevice 681 may include or have access to various input/output devicesconfigured to receive the design 686. In some embodiments, the system680 may receive the design 686 via a network. In some embodiments, theuser or system 680 may modify or adjust the design 686 based on the map684. For example, a user may adjust the size of the design 686 relativeto the map 684 of the material in order to generate a desired workingpath on the material being worked on. In some embodiments, the system680 may automatically adjust or optimize the size of the design based onthe dimensions of the material.

The network may include computer networks such as the Internet, local,metro, or wide area networks, intranets, and other communicationnetworks such as mobile telephone networks. The network can be used toaccess web pages, online stores, computers or data of a retail storethat can be displayed on or used by at least one user device, system680, or system 100, such as, e.g., a laptop, desktop, tablet, personaldigital assistants, smart phones, or portable computers.

The system 680 may be configured to create, capture, or load designs 686in a plurality of ways. In some embodiments, designs may be downloadedor otherwise obtained. For example, a user may generate a design on acomputing device and transfer or otherwise convey the design to thesystem 680. In another example, the system 680 may receive the designfrom a third party entity. For example, a user may purchase a designonline via a network and upload the design to the smart device orcomputer 681. In some embodiments, the system 680 may facilitatecapturing a map of the surface and also of the design 686 on thatsurface. This may facilitate setting up the system 680 to follow aspecific line or to show the user an image of the surface of thematerial underneath a large tool that obstructs sight, or to show thesurface with a drawn plan in a pristine state before it is covered withdebris or the surface on which the plan is drawn is cut away. In someembodiments, the design 686 could be designed, altered, or manipulatedfrom its original form on the device 681 through a menu driven interfaceallowing the user to input distances, angles, and shapes or to free handa drawing on a touch sensitive pad or display.

In some embodiments, while a user moves the system or rig 680 along thetarget material, the smart device 681 processes the captured images fromthe camera 682, determines the location of the rig 680, or provides adesired path to the user on display 689. Once the user has placed therig 680 close to the desired path, the rig or system 680 mayautomatically adjust the position of the tool 699 to achieve the desiredworking path in accordance with the loaded design 686. The term “rig”and “system” may be used interchangeably as described herein. In someimplementations, the rig includes the physical device and itsattachments, and the system includes the physical device, itsattachments, and related technology and software code embedded orincluded in some of the physical elements.

In some embodiments, the system 100 builds the map 684 based on imagescaptured by the camera along an arbitrary path of the target materialuntil the entire area of interest has been covered. For example, a usermay sweep the camera 300 in an arbitrary path over the surface of thematerial until the entire area of interest has been covered. In someembodiments, the system 100 can be configured such that the camera 682can be removed from the rig 100 to sweep or pass over an area of thematerial. The system 100 may stitch together the images obtained by thecamera 682. For example, the system 100 may use an image mosaic softwarecode 685 to form a cohesive map 684 of the area of interest of thesurface of the material. The system 100 may store the map 684 in memory687. Upon receiving an image taken by the camera 682 of mapped material,the system 100 can compare the image with the map 684 held in memory 687and may further determine a position and orientation. For example, thesystem 100 may determine, based on the comparison, the position of thetool, drill, system, cutting member, stage, or rig.

In some embodiments, the system 680 may allow a user to create and loada design 686 after the map 684 has been assembled. For example, afterthe map 684 has been assembled on the smart device 681 (such as acomputer), the user may create a design 686 on the computer by plottingit directly on the generated map 684. For example, the user may markpositions on a piece of wood where a drill hole is desired. Thetechniques and features of the software code 685 (include computer aideddesign and manufacturing) can be employed to create a design withaccurate measurements. Then, when the user returns to the material, theposition of the camera 682 on the map 684 may be displayed on a screenor display 689 to the user, with the design plan 686 overlaid on the map684. For example, the system 680 can display on the display device a mapimage overlaid with an indication of a position (e.g., position of thesensor, device, cutting tool or drawing tool) relative to the surface ofthe material. In some embodiments, the system 680 may identify the geolocation of the tool relative to the map. For example, the camera 682may be attached to a drill and used to determine the position of thedrill exactly relative to target drill locations specified in the design686, facilitating the user to line up the drill more precisely.

In some embodiments, the system 680 is configured to build the map andtrack the camera's position using visual features of the targetmaterial. In some embodiments, the software 685 includes instructions tobuild the map and track the camera's position using visible features ofthe material such as grains, imperfections, or marks. The targetmaterial may be altered to facilitate mapping and tracking functions.For example, solid colored plastic may be too undifferentiated for thesystem 680 to effectively map or track. Therefore, a user may, e.g.,alter the material surface in some way to add features that can betracked. In another example, the system 680 may instruct a marker toarbitrarily add features that can be tracked. For example, features thatmay be added may include ink to the material that is typicallyinvisible, but which can be seen either in a nonvisible spectrum or inthe visible spectrum when UV or other light is applied, allowing thecamera to track the pattern of the invisible ink while not showing anyvisible markings once the work is done. In some embodiments, the usermay apply stickers with markers which can later be removed. Featurescould also be projected onto the material such as with a projector. Or,if the user will later paint over the material or for other reasons doesnot care about the appearance of the material, the user could simplymark up the material with a pencil or marker.

In some embodiments, the marker tape or stickers may include a uniquesequence of barcodes over the entire length of the tape. In someembodiments, the marker tape may be thin such that the device may passover the marker tape without getting stuck or disturbed. In someembodiments, the tape may be designed and constructed such that it willstay down as the device moves over the tape, but can also be easilytaken off upon completion of the project. Marker tape materials mayinclude, for example, vinyl or any other suitable material.

In cases where the camera cannot track the material, or cannot do soaccurately enough, or the material is unsuitable for tracking (e.g. dueto an uneven surface), or any other reason that prevents the cameratracking the surface directly, the camera may track other markers off ofthe material. For example, the user may put walls above, below, oraround the sides of the material being worked on that have specificfeatures or marks. The features or marks on the surrounding surfaces mayenable the camera to determine its position on or relative to thematerial. In various embodiments, different types of positioningtechnology or devices may be used to locate the tool 699 or stage 690,possibly in conjunction with a camera 682 that is used mainly forrecording the visual appearance of the material without needing toperform the tracking function. Positioning technology may include, e.g.,ultrasonic, IR range finding, or lasers, for example.

The system 680 can adjust the precise location of the tool 699 byadjusting the geo location of the stage 690 or a moveable platform towhich the tool 699 is attached. The stage 690 may be connected to aneccentric coupled to a motor shaft. As the motor shaft moves in acircular path the eccentric moves the stage 690 in complex arcs andpaths. A pivot 694 may be connected to the stage and is also connectedto an eccentric coupled to a second or pivot motor shaft. The pivot 694may be configured to pull or push the stage 690 to achieve controlledmovement of the stage within a 360 degree range. By controlling therotation of the eccentrics, the system 680 may position the stage inalmost any XY position in the range.

In some embodiments, the system 680 uses a reference lookup table tofacilitate guiding the tool. For example, a reference look table mayinclude motor coordinates related to desired stage positions. In someembodiments, the system 680 may compute calculations that can be used toadjust the motors that move the stage 690 and the cutting bit of thetool 699 connected to the stage 690 to the desired location. In someembodiments, the system 680 may move the tool 699 360 degrees in a twodimensional plane by positioning the stage 690 and pivot 694. Forexample, the cutting instrument of the tool can be moved anywhere withinthe 360 degree window of the target range 408 (see, e.g., FIG. 23).

In some embodiments, electric motors may move, position or adjust thestage 690 and pivot 694. A stage motor controller 691 may control thestage motor 210. A pivot motor controller 695 may control the pivotmotor 220. The stage motor controller 691 and pivot motor controller 695may receive information that includes the desired location orcoordinates from the smart device 681. Based on the receivedinformation, the stage motor controller 691 and pivot motor controllermay 695 activate and control their respective motors 210, 220 to placethe stage 690 and the pivot 694 in the proper or desired position,thereby positioning the tool in the desired geo location.

In some embodiments, the smart device 681 may communicate with, receiveinformation from, and control the tool 699. For example, the smartdevice 681 may send instructions to power on or off or increase orreduce speed. In some embodiments, the instructions may signal when toengage the target material by, e.g., adjusting the depth of the tool 699when the user is close enough to or near the desired path on thematerial.

FIG. 4 provides an illustrative flow chart of an embodiment of a method600 for performing a task on a target material. For example, the method600 may facilitate cutting a working surface using a router basedembodiment. In some embodiments, at act 602 the user may find or createa design they want to cut out of a material. In some embodiments, thetask may include a plurality of tasks (e.g., a first task and a secondtask that may be a subset of the entire task). For example, the task ofcutting the design out of the material may comprise a first task ofcutting a first portion of the design and a second task of cutting asecond portion of the design. In some embodiments, the first and secondtask may be substantially similar (e.g., same type of cutting or drawingtool), while in other embodiments the first and second task may differ(e.g., different drill bit or drawing tool, different type of cuttingtool, different user device, different area of the material, etc.).

Prior to or subsequent to identifying the design plan, the user may mapthe surface of the material or sheet of material. If the material hasenough markings the user may use the material itself. However, in act604, if the material has a flat surface or limited markings the user canplace markers on the material. Markers may include, e.g., printer markerstickers or other type of suitable indicia capable of being readilyidentified.

In some embodiments, at act 606, a sensor may scan the material toobtain scanned data. For example, a camera scans the material and thevarious markers to create the map. The CPU may process the imagescaptured by the sensor or the camera and generate the map or scanneddata. The size and shape of the map can be appropriately manipulated toa preferred configuration. In some embodiments, at act 608, the designis registered or otherwise related to the map to create a cutting plan.

In some embodiments, at act 610, the cutting tool is prepared to performthe task. For example, a user may load, adjust, or secure the bit, mountit to the rig and turn the router on. In some embodiments, the systemmay turn on the router via a software initiated process in response toone or more parameters, including, e.g., motion sensing of a movement ofthe rig 100 in a particular direction by the user.

In some embodiments, at act 612, the system may receive varioussettings. For example, the user may set the width of the bit of thecutting tool, the range (e.g., area) of the tool's desired rangecorrection, the size of the cross-hair, or the speed of the cuttingtool. Thereafter, instructions may be provided to the software to beginthe task.

In some embodiments, at act 614, the rig is placed adjacent to thedesired path so that the system can automatically adjust the position ofthe tool into a starting adjustment range position along the desiredpath. The user may then follow the constant speed strategy as describedherein, for example with regards to FIG. 5. In some embodiments, oncethe tool has advanced fully around the plan (act 616) the user canremove the device and work product from the material.

FIG. 5 shows an illustrative flow chart of an embodiment of a method 650for the constant speed strategy. The process in FIG. 5 assumes the useralready has the router attached to the rig and has mapped their materialand loaded up their design. In some embodiments, at act 651, the userstarts the process to cut the material. The process can include movingthe tool to a spot within the range of plan or path on the material (act653). For example, a user may move the tool or the tool may be remotelycontrolled.

In some embodiments, the process includes determining, based on thelocation of the tool, whether there is a point on the plan within theadjustment range of the rig (act 655). In the event that there is nopoint within range, the process may include sending a notification(e.g., via the display, audio, vibration, light, or LED) and waitinguntil the user moves the device within the adjustment range (act 657).

In some embodiments, if there is a point within the adjustment range,the process includes, at act 659, setting the point on the plan nearestto the tool as the target point. In some embodiments, the process mayinclude moving the tool to the target point and cuts the material (act661).

In some embodiments, the process includes creating a second target bydetermining if a new target is within the adjust range (act 663). Ifthere is a second target, the process may include setting the secondtarget point as the new target (act 665). The device may continue tomove in a clockwise direction, cutting from the old target point to thenew target point. In some embodiments, the process may includeidentifying the next target point within the adjustment range (act 663)while the tool or router is cutting from the old target point to the newtarget point. For example, the determination of an optimum or desiredsecond target may be continuous, and based on the image, or variousimages, detected from the camera and processed by the system.

If there is no target point within range, in some embodiments, theprocess includes clearing the target point (act 667) and starting at act655 to determine whether there is a point on the plan within theadjustment range. In some embodiments, this process continues until thetool has gone through all or part of the plan in a particular direction,such as a clockwise direction.

Referring to FIG. 6, an illustrative example of an embodiment of anelectronic design store 1005 that includes a plurality of electronicdesigns 1030 is shown. A single entity may control the online designstore and provide all designs, or a plurality of entities may providedesigns to the design store. The entity controlling the design store mayapprove or reject designs provided by various entities. Users of thedesign store may purchase designs from the entity controlling the designstore or the entity the submitted the design. For example, the entitycontrolling the design store may facilitate transactions with respect toselling and transferring the design to a user, and may keep a percentageof the purchase price while providing the supplier of the design with acertain percentage of the purchase price.

The electronic design store may execute on one or more serversconfigured to provide functionality disclosed herein. Client devices(e.g., computing device of the cutting or drawing system disclosedherein, laptop, smartphone, or tablet) may be configured to communicatewith the electronic design store via a network (e.g., Internet, wirelessnetwork, Ethernet, cellular data networks, 3G, or 4G.).

In some embodiments, control circuitry of the system 680 can obtain anelectronic design from the electronic design store. The electronicdesign store 1005 may be managed by an entity, such as an onlineretailer. The entity or one or more online users of the design store mayprovide the designs. In some embodiments, users modify the entity'sdesigns or other users' designs and submit them to the store (see FIG.9).

The electronic design store 1005 may include a plurality of categoriesof designs 1010 including, e.g., Living Room, Bedroom, Dining Room,Workshop, or Miscellaneous. In some embodiments, the designs may becategorized by material type (e.g., wood, type of wood, metal, glass,plastic, paper, tile, or linoleum), cost of materials, estimated time tocompletion, size, weight, difficulty to build, or popularity, forexample. Each category 1010 may include sub-categories such as, e.g.,Living Room: end tables, coffee tables, chairs; Bedroom: beds,headboards, dressers; Dining room: tables, chairs, hutches, sideboards,table settings; workshop: shelves, workbenches, stools; Miscellaneous:toys, picture frames, games art. These categories are examples and therecan be other categories for various other items.

In some embodiments, the store 1005 may include a rating 1020 for adesign as well as reviews. For example, online users of the store 1005may rate or review the design based on various factors. In someembodiments, the factors may include aesthetic or functional factorssuch as, e.g., design, ease cutting, durability, difficulty, or pricevalue.

In some embodiments, the store 1005 may include a “build” button 1025and a price. Upon selecting the build button 1025, the user may beprompted to provide payment information. In some embodiments, the store1005 may already have a user's payment information and not have toprompt the use for payment information. In some embodiments, the store1005 may prompt the user to confirm their build selection (e.g., confirmthe payment). Upon selecting build 1025, the store may display nextacts.

Referring to FIG. 7, an illustrative example of an embodiment ofordering parts for an electronic design via an electronic workshop isshown. In some embodiments, upon selecting the build button 1025 of theelectronic design store, a user may be directed to the electronicworkshop 1006. The user may log into the electronic workshop 1006directly. The electronic workshop 1006 can include a plurality of acts(e.g., 1040, 1090, 1095, 1100, 1105) to facilitate building a design. Insome embodiments, upon selecting a design from the electronic designstore 1005, the workshop 1006 may include the act of ordering parts1040. Based on the design, the workshop 1006 may display a parts list1055 that includes a plurality of parts 1060, dimensions for each part1065, a part number 1070, or a check box to indicate whether or not toorder the part 1075 or to indicate whether or not the part has beenordered. For example, the parts list 1060 may include cherry plywoodsheet, with a dimension 1065 of 1″×36″×18″ which corresponds to a partnumber 1070 Z595B2. This part may be selected for order 1075. Thedimensions 1065 may be in various units or various unit systemsincluding, e.g., the metric system, English units, or US customaryunits, for example.

In some embodiments, the workshop 1006 may include the ability to selectan entity 1085 (e.g., from a plurality of entities) to supply the partsor from whom to order the parts. In some embodiments, the workshop 1006may be configured to automatically determine whether an entity has therequired/selected parts in stock. For example, if the entity does nothave all the parts in stock or does not supply a specific part, theworkshop 1006 may not display the entity or gray the entity out orotherwise indicate that the entity does not supply all the parts. Insome embodiments, the workshop 1006 may determine that no single entitysupplies all the parts or that certain parts may be obtain for a cheaperprice at a different entity. Accordingly, the workshop 1006 may beconfigured to automatically order parts from the entities that supplythem, that can supply/deliver them the soonest or by a certain date, orat the cheapest price.

In some embodiments, the workshop 1006 includes an “Order for in-storepickup” or the like button 1080. Upon receiving an indication to selectthe button 1080, the workshop may communicate, via the network, with theselected supplier 1085 to order the selected parts 1075. In someembodiments, the workshop 1006 may direct the user to the website of thesupplier. In other embodiments, the workshop 1006 may directly order theparts. In some embodiments, the workshop 1006 may prompt the user orpayment information or to confirm the order.

The workshop 1006 may display a plurality of acts including, e.g.,ordering the parts 1040, cutting sides 1090, cutting seat 1095,fastening parts 1100, and varnishing 1105. The workshop 1006 may tailorthe acts for each build project or type of build project. In someembodiments, the workshop 1006 may indicate to wait a certain period oftime after performing an act before performing the next act.

Referring to FIG. 8, an illustrative example of an embodiment ofproviding instructions to perform a task via an electronic workshop isshown. In some embodiments, the workshop 1006 may include a second actof cutting sides 1090 in order to build a design, e.g., a chair. In someembodiments, the second act may include painting, varnishing, sanding,organizing, drawing, or other act that facilitates performing a task.

In some embodiments, the workshop 1006 may include audio or video 1110.The audio or video 1110 may provide instructions to the user tofacilitate performing the act. For example, the instructions 1110 mayinstruct the user on how to download the design on the device, how toconfigure the device, how to place the device on the target material,how to prepare the target material, or safety tips.

In some embodiments, the workshop 1006 may display the design plan 1112and be configured to send the design plan to the device via a “Send toSmartRouter” or the like button 1115. The SmartRouter may include adevice disclosed herein such as a system 680, system 100, rig, device orany other tool configured or capable of performing a guided task. Insome embodiments, the workshop 1006 may wirelessly transmit the designplan to the SmartRouter. In some embodiments, the workshop 1006 maytransmit the design to the SmartRouter via an input/output (e.g., USB,serial port, Ethernet, Firewire, or optical link, for example). TheSmartRouter may include a camera configured to take a picture of thedesign 1112 displayed via the graphical user interface of the workshop1006.

Referring to FIG. 9, an illustrative example of an embodiment of anelectronic design studio 1007 is shown. The design studio 1007 may beconfigured to allow a user to design a project. For example, a user maywant to design a custom table. The design studio 1007 may display thecustomizable components 1130 of the project, such as, e.g., the tabletopand drawers for a table design. In this example, the customizablefeatures include the dimensions 1135 or features of the tabletop (orother design), such as the height of the surface, the number of leftdrawers, number of right drawers, and the dimensions of the left andright drawers. A user may input the dimensions or height via an inputtext box, drop down menu, scroll bar, buttons or any other way ofinputting data. In some embodiments, the design studio 1007 may suggesta dimension or number or other feature attribute. In some embodiments,the design studio 1007 may automatically update a feature attributebased on the attribute of another feature. For example, if the userenters the table dimensions and the number of drawers, the design studio1007 may automatically determine the dimensions for the drawers suchthat they will fit within the overall dimensions of the table.

In some embodiments, the design studio 1007 may be configured to allow auser to select various artistic components of the project. For example,the design studio 1007 includes various options 1145 and 1150 for thetable leg profile 1140. For example, the user may select a monogram 1145or an inlay 1150 design.

In some embodiments, the design studio 1007, upon receiving the designselections, may display a design plan 1125 corresponding to the designselections. The design plan 1125 may include the cutting pattern. Thedesign pattern 1125 may further indicate the dimensions of the material.In some embodiments, based on the design attributes 1130 and 1140, thedesign studio may automatically configure the design cutout 1125 inorder to maximize the material usage and reduce wasted material. Forexample, the design studio 1007 may combine various elements such thatthe elements are cut out of a first piece of material and a second pieceof material. In some embodiments, the design studio 1007 may take intoaccount the accuracy and precision of the SmartRouter or other cuttingdevice in order to set up the cutting pattern.

Referring to FIG. 10, an illustrative example of an embodiment of designplan and marking material is shown. Placing marking material 1155 mayfacilitate mapping the target material. For example, the target materialmay not contain sufficient differentiating marks. Adding differentiatingmarks (e.g., stickers 1160) to the target material may facilitate thesystem 680 in mapping the target material and tracking the positioningof the cutting tool during the cutting process. In this example, thedesign plan is in the shape of a country. The marking material may beplaced on the surface of the target material to facilitate mapping thetarget material and tracking the position and adjusting the position inaccordance with the design.

Referring to FIG. 11, an illustrative example of results generated byembodiments of systems and methods of the present disclosure is shown.In some embodiments, these results may reflect cutting results ordrawing results. In this example, a dimension of the cutout/drawing 1170is approximately 4 inches while a dimension of the cutout/drawing 1175may be several feet (e.g., 6 ft).

Referring to FIGS. 12-20, various embodiments of apparatuses and systemsof the present disclosure for use with a cutting tool are shown. In someembodiments, a system or rig 100 is configured for use with a router500. The system 100 may include two support legs 104 which may becoupled to or otherwise attached to a base housing 130 on the lower endand terminate into a device mount 122 at the upper end. The device mount122 may include left and right display clips 124 to clamp or lock themonitor or smart device 570 into the device mount 122. In someembodiments, the device 570 includes a display screen 572 for the userto view the cutting path for that particular use. The base 130 mayinclude left and right handles or grips 106 attached through handlesupport arms 108.

In some embodiments, the lower end of the base 130 includes a bottomplate 139 that encloses the stage 150 and a lower stage skid pad 151.The base 130 and bottom plate 139 may be fastened or otherwise coupledto one another such as by machined screws. As seen in FIG. 8, the bottomplate 139 may include a bottom skid pad 141 attached or otherwisecoupled to the bottom. The bottom skid pad 141 may be used to assistmovement of the rig 100 along the surface of the target material. Thebottom skid pad 141 may be made of a high density polyethylene, Teflon,or other suitable material which is both durable and suited for slidingalong the material.

In some embodiments, the router 500 (or other tool) can be added to therig 100 by attaching or otherwise coupling the router base plate 510 tothe stage 150. As seen in FIG. 20, the stage 150 may include severaltool attachment points 164 for attaching the router base 510 to thestage 150. The router base 510 may include several router base supportlegs 508 which forms a cage around the router bit 512. In someembodiments, the router 500 includes a power cord 506 and an on/offswitch 504. As mentioned previously, the rig 100 may be implemented as aself contained portable unit including an on-board source of power, suchas a battery source.

In some embodiments, the system 100 includes a smart unit or monitor570. The smart unit or monitor 570 may include an input cable 574 with acable terminal or receptacle 576. In some embodiments, a smart unit mayinclude the CPU, software, and memory. In some embodiments, the device570 may include a monitor and a cable 574 and receptacle 576 that iscommunicatively coupled to or connect to the CPU unit.

As shown in FIGS. 13-18, the system 100 may include a stage motor 210and a pivot motor 220. The stage motor 210 may be used to controlmovement of the stage 150. The pivot motor 220 may be used to controlmovement of the pivot arm 156 which pulls or pushes the stage 150 toconvert the rotational motion of the motors 210, 220 into a relativelylinear motion. The stage motor 210 and pivot motor 220 may each includetheir own motor cap 212, 222 respectively.

In some embodiments, the motors 210, 220 are controlled by the stagemotor driver 253 and the pivot motor driver 254. The drivers 253 and 254may be connected or otherwise communicatively coupled to the printedcircuit board 250 or the microcontroller board 252. In some embodiments,the microcontroller 252 processes low level instructions from the smartdevice or CPU unit (e.g., a laptop, tablet, smartphone, desktopcomputer, mobile devices). The instructions may include instructions toposition the motors 210, 220 (e.g., positions 150, 125) into the correctcommands to drive the motors to those positions. In some embodiments,the motors' orientations are tracked by homing them to a zero positiononce and then tracking all or part of the subsequent acts taken. In someembodiments, the system may use rotary encoders to track the state ofthe motor shafts' orientations. The motors 210, 220 and the motordrivers 253, 254 may be powered by connecting the power plug receptacle255 into a power source.

As shown in FIGS. 14-15, some embodiments of the present disclosureinclude a rig 100 having a camera support 190. The camera support 190may include one or more support members which may be connected to theupper stage housing 130 and terminate at the top of the rig 100 where acamera 300 is mounted. In some embodiments, the camera 300 and a lens304 are placed in a relatively downward position to capture images ofthe material being worked and the surrounding areas thereof.

In some embodiments, eccentrics, or eccentric members, can be used toconvert the rotational motion of the motors into linear motion.Eccentrics may include circular disks rotating around an off-centershaft. As the shafts are rotated, they produce linear motion in thecollars wrapped around the eccentric disks. Eccentrics may be capable ofmaintaining the same low backlash accuracy of a precision linear stagewhile being less expensive. For example, a linear displacement range of½″ may be within the capabilities of an eccentric. In some embodiments,the system 100 may include two eccentrics mounted to the frame andconnected to a stage configured to slide on a base. The eccentrics maybe rotated by stepper motors, which may rotate or move the stage withinthe frame. In various embodiments, the size and shape of the variouseccentrics can be varied to provide larger or smaller relative movementof the tool 699 relative to the workspace.

In some embodiments, to constrain the stage, at least one eccentric canbe connected directly to the stage by a ball bearing coupling, withanother eccentric connected by a coupling and a hinge. This linkagedesign may result in a nonlinear relationship between the eccentricorientation and stage position. For example, a linkage design closer tothe center of the range moderate rotation of an eccentric may producemoderate motion of the stage. In another example, a linkage design nearthe edge of the range may produce larger rotations which may move thestage a fixed amount. In some embodiments, stage displacement is limitedto a threshold of the maximum range (e.g., 99%, 98%, 97%, 95%, 94%, 90%,87%, 85%, or another percentage that facilitates the functionality ofthe present disclosure) to avoid positions with extreme nonlinearity.This linkage design may allow for back driving, in that forces acting onthe tool may cause the cams to rotate away from their target positions.In some embodiments, the present disclosure includes adequately poweredmotors which have sufficient power to preclude back driving even in thepresence of significant forces.

As seen in FIG. 20, in some embodiments, the upper stage housing 130 isa one piece unit with spacers 131, 133, 135 machined or formed into theupper stage housing 130. The spacers 131, 133, 135 may provide therequired space for the stage 150 and pivot arm 156 to move. In someembodiments, the front spacers 131, side spacers 133, and rear spacers135 need not be formed as one unit. For example, the front spacers 131,side spacers 133, and rear spacers 135 may include separate piecesattached to the upper stage housing 130. The upper stage housing 130 mayaccommodate a plurality of upper stage skid pads 137. The upper stageskid pads 137 may be configured to allow the stage stabilizing arms 152to move along the pads 137 with minimal friction.

In some embodiments, the stage 150 may include a light but durable andstrong material such as aluminum or some other alloy. In someembodiments, the stage 150 may be machined to include one or morestabilizing arms 152, the stage eccentric arm member 154, toolattachment points 164, or an opening 160 where the tool extends throughthe stage 150. In some embodiments, a pivot arm 156 may be machined fromthe same alloy or material as the stage 150.

During operation of some embodiments, the stage motor 210 can move inresponse to rotation of the stage motor shaft 184. A stage eccentric cammember 174 may be attached to the stage motor shaft 184. When the stagemotor shaft 184 rotates, the stage eccentric cam 174 may rotate. Thiscam design may cause the stage arm member 154 connected to andsurrounding the cam 174 to move the stage 150. In some embodiments, abearing ring may be used between the cam 174 and the stage arm member154.

In some embodiments when the pivot motor 220 moves, the pivot motorshaft 186 rotates. The system 100 may include a pivot eccentric cammember 176 attached to the pivot motor shaft 186. When the pivot motorshaft 186 rotates, the pivot eccentric cam 176 may rotate, causing thepivot arm member 154 connected to and surrounding the cam 176 to movethe pivot arm 156 back and forth, which may cause the stage 150 to moverelative to the pivot arm 156. In some embodiments, a bearing ring maybe used between the cam 176 and the pivot arm 156.

In some embodiments, as the stage 150 and pivot arm 154 move, the stagestabilizing arms 152 move along the upper stage skid pads and the lowerstage skid pad 151 (see FIG. 12) to stabilize the stage 150 duringmovement. In some embodiments, the stage eccentric 174 and pivoteccentric 176 include a boss. The boss, for example, may provide theeccentric 174, 176 with extra material to house the set screw whichclamps on the stage motor shaft 184 or pivot motor shaft 186. This mayfacilitate secure attachment of the respective eccentric 174, 176. Anembodiment of the pivot eccentric boss 187 is shown in FIG. 20. Thefigure does not show the stage eccentric boss because, in the embodimentshown, the eccentric is flipped relative to the pivot boss 187 becausethe stage 150 and the pivot arm 156 are operating on different planes.

By way of example of some embodiments, FIG. 23 depicts the monitor ordisplay 572 as the user pulls or pushes the rig 100 using, e.g., handles106. The router bit 512 (as shown by the crosshairs 410) of the router500 may perform a task on a target material 400, e.g., cut the material402 or draw on the target material. The user may view the intended path404 (as shown in solid lines) of the design on the display 572 of themonitor or smart device 570. In some embodiments, the display 572 showsthe desired path 406 as well as the target range 408. The target range408 may be related to the range of movement of the stage 150 andcorrespondingly the attached tool. For example, if the range of movementof the router is generally 0.5 inches in any direction from its centerpoint then the target range 408 may be defined as a circle with a oneinch diameter since the router bit can only move 0.5 inches from thecenter point. Further to this example, the user may move the router bit410 within 0.5 inches of the intended path 404. Once the intended path404 is within the target range 408, the CPU may automatically identify atarget point on the intended path 404. The CPU may send instructions tothe motor controllers to move the stage 150 to the appropriatecoordinates, which may correspond with the bit 410 reaching the targetpoint and cutting along the intended path 404. In some embodiments, thesystem can account for the width of the cutting bit 410. For example, ifthe system were to place the router bit 410 directly on the intendedpath 404 the width of the router blade may cause the router to removematerial beyond the intended path 404. The system may account for thewidth of the cutting bit 410 by setting the desired path 406 somedistance from the intended path 404 so that the bit 410 takes outmaterial up to, but not beyond, the intended path 404. Since cuttingelements or bits may have different widths, the system may be adjustedto remove or vary the bit width adjustment or the gap between theintended path 404 and the desired path 406.

As the system cuts or reaches one target point, in some embodiments, thesystem may identify a next target point and continue cutting along theintended path 404 in a clockwise direction. The user may continue topull or push the rig 100 via the handles 106. The user may keep theintended path 404 (a line or area) within the target range 408 asdisplayed on monitor 572. A more detailed flow and process is describedin conjunction with FIGS. 4 and 5.

With reference to FIGS. 12-20, an embodiment of the present disclosureincludes a handheld computer controlled router system using an eccentriccam movement of a stage to control the router. However, eccentric cammovement is not the only design or method that can be employed to move atool or stage. As seen in FIG. 21, an illustration of an embodiment of asystem of the present disclosure that includes a linear based design isshown. The system 700 may include a router 701 mounted to a tool arm702. The tool arm 702 may be built on top of the linear stage base 706.The linear stage base 706 may move in a back and forth direction alongthe axis line formed by the lead screw 705 and the precision nut 707. Insome embodiments, linear movement is achieved by controlling the steppermotor 710 which turns the lead screw 705 which moves the precision nut707 forcing the linear stage base 706 to move. The stepper motor and endof the linear system may be mounted on the base 709. In someembodiments, handles 708 may be attached to the base 709 for users tomove the system 700 on the material.

In some embodiments, the linear system 700 includes camera 704 or sensortechnology previously described to map the surface of the material anddetermine the coordinates or location of the device 700 on the material.The user may scan the material with the camera 704 (connected to toolarm 702 using bracket 703) to make a map as described herein. In someembodiments, the system 700 receives a design and registers the designor otherwise relates the design to a map of the material. For example, auser may create, download, or otherwise obtain a design and provide itto the system 700. In some embodiments, a user may return to thematerial with the tool, and follow the cut lines of the plan.

In some embodiments, the device 700 includes handles 708 to move thedevice forward while trying to keep the router 701 on the intended cutpath or line. If the device 700 drifts off the cutline or path, thesystem 700 may detect the error by detecting its location and comparingit with the plan. The system 700 may, responsive to detecting the error,correct the path. For example, the system 700 may power the steppermotor 710 to rotate the lead screw 705 to move the router 701 by movingthe linear stage base 706 to such a point where the cutting bit 712intersects the plan line exactly. In this example, the presentdisclosure can be used to make complex, curved, or precise cuts.

Both the eccentric and linear embodiments may employ a monitor ordisplay to communicate or display the location of the tool relative tothe intended path. Various embodiments may also use other techniquessuch as shining a laser point or line where the user should go or somecombination thereof.

In an illustrative example, the tool may be used to cut a design, suchas on a table top or sign, where the cut does not go all the way throughthe material and the tool can be used for more than one pass to removeall the material required for the design. In such instances, the systemmay be configured to signal the motors to move the router back and forthwithin the target range until all material has been removed inaccordance with the design. In some embodiments, the system may beconfigured to provide a notice to the user to wait until all suchmaterial within the target range has been removed. In some embodiments,the system may notify the user upon completion of the design in acertain region. This may indicate to the user it is time to move forwardto a new target area.

In some embodiments, the router may be configured to follow a line drawnonto the material itself. For example, the camera may be placed at thefront of the operating tool and view the drawn line. The system may uselocation mapping to stay accurate to the drawn line.

Some embodiments of the present disclosure may include printing ordrawing on a target surface or material. For example, a user may buildor otherwise obtain a map and upload a design. The system may beconfigured to print the design section by section on a large canvas. Thesystem may identify which color or colors to emit based on the designand location of the printing tool. After the user mapped the materialand uploaded the design, the user may pass the device over the materialto print the image.

Referring to FIG. 22, an illustrative embodiment of a printer of thepresent disclosure is shown. In some embodiments, the printer may bemanually guided, while in other embodiments the printer may beautomatically positioned with wheels (or treads, or other) like a robot.As with the tool based embodiments, the system 800 includes a camera 801which may be used to build a map of the surface and track the positionof the device 800 on the surface. The printer head 805 can be configuredto slide along a linear stage 806 powered by a stepper motor 807 whichmay rotate a lead screw 803 which may move a precision nut 804.

In some embodiments, the device 800 obtains or generates a map of asurface and registers or otherwise relates an image that is to beprinted on that surface. The device 800 may then be positioned at oneside of the intended printed area. In some embodiments, the camera 801may take an image and the device 800 may determine its position on thesurface. The device 800 may then move the printer head 805 from one endof the linear stage 806 to the other to lay down a strip of ink. Thedevice 800 may further be moved forward the width of one strip of ink(or slightly less to prevent gaps) by stepper motors 802 attached towheels 809. In some embodiments, the printer 800 may include wheels 811that are configured to roll when the motor driven wheels 809 are driven.Once the printer 800 has determined that the location of the printer 800is correct for the next strip, the printer may print the strip of inkand repeat until the edge of the image has been reached. In thisexample, the printer 800 can lay down a band of ink as wide as a strip'slength and arbitrarily long. At this point, the printer 800 can eithermove itself to the next position to start laying down another band ofink, or the user can do this manually.

Various embodiments of the printer system 800 can work either in realtime (e.g., printing as it is moving) or by taking steps (printing whenat a stop position). Embodiments can suit different tasks: e.g., ahighspeed, real-time version might be built to print billboards, whichhave low accuracy requirements, while a more precise, slower,step-taking device might be built to do accurate large-format printing,e.g. of posters. Either approach can also be made to work on a wall,which would make it possible to print murals, advertisements, or otherimages directly onto a wall, rather than having to print the image onwall paper and then stick it up. In addition, this tool could easily bemade to work with curved surfaces, which are typically extremelydifficult to cover with images.

The printer embodiment 800 may be adapted for use with any type of paintincluding inkjet, liquid or spray paints, markers, laser printingtechnology, latex based paints, and oil based paints.

In some embodiments, the mapping phase may be bypassed if the materialsize is greater than the design. For example, the user may determine astarting point that corresponds with a region on the design (i.e. thetop right corner) and the system 800 may start painting the image.

The embodiments discussed herein so far have focused on rigs thataccommodate a tool being attached to a stage and the stage is moved orcontrolled by one or more motors. The linear design depicts a routermoved by a motor where the router is connected to a linear stage. Insuch instances, the router is attached or mounted as a separate unit.However, the system can be designed as one unit where the stage, motorsmoving the stage, controllers, and all within the same housing andwithin the same power system as the housing and power of the tool. Byway of example, the router housing would be enlarged to fit the stageand motors and might include a display integrated into the housing.Through such an embodiment, the form factor might be improved to looklike a one piece tool.

The embodiments presented here are not meant to be exhaustive. Otherembodiments using the concepts described herein are possible. Inaddition, the components in these embodiments may be implemented in avariety of different ways. For example, a linear stage, or a hingejoint, or an electromagnetic slide, or another positioning mechanism maybe used to adjust a tool or the stage the tool is on in reaction to itsdetected position and its intended position.

By way of example, the systems and methods described herein can be usedwith drills, nail guns, and other tools that operate at a fixedposition. In such embodiments, the tool and software could be modifiedsuch that the plan includes one or more target points instead of a fulldesign. The device could be moved by the user such that a targetposition is within the adjustment range. The software could then movethe tool to the correct target position. The user could then use thetool to drill a hole, drive in a nail, or perform other operations.

In some embodiments, the tools can facilitate performing a task withoutproviding automatic adjustment. For example, the stage, pivot, motors,and eccentrics could be removed. The tool could be attached to the lowerstage housing. The software could be modified such that the planincludes one or more target points. The user could move the device suchthat the tool is directly over the target position. The user could usethe location feedback provided on the display to perform accuratepositioning.

In some embodiments, the present disclosure facilitates guiding orpositioning a jigsaw. A jigsaw blade may be rotated and moved in thedirection of the blade, but not moved perpendicular to the blade or itwill snap. The present disclosure may include a rotating stage that canbe placed on top of the positioning stage. The jigsaw may be attached tothis rotating stage. The software may be modified to make the jigsawfollow the plan and rotate to the correct orientation, and made toensure that the jigsaw was never moved perpendicular to the blade. Insome embodiments, a saber saw may take the place of the jigsaw toachieve the same effect. The cutting implement may be steered byrotating the rotating stage, and the cutting implement could be movedalong the direction of cutting by moving the positioning stage.

In some embodiments, the system may support rotation and not supporttranslation. For example, the system may automatically orient the bladein a scrolling jigsaw (e.g., a jigsaw with a blade that can be rotatedindependently of the body). In this embodiment, the software may steerthe blade to aim it at the correct course and the user may beresponsible for controlling its position.

In some embodiments, the system may position a scroll saw. For example,the camera may be coupled to the scroll saw, and the user may move thematerial. The upper and lower arms of the scroll saw may be mechanizedsuch that they can move independently by computer control. The user maythen move the material such that the plan lay within the adjustmentrange of the scroll saw, and the software would adjust the scroll saw tofollow the plan. In some embodiments, the upper and lower arms could bemoved to the same position, or moved independently to make cuts that arenot perpendicular to the material.

In some embodiments, the position correcting device can be mounted to amobile platform. For example, the device may be placed on material andleft to drive itself around. The device can also be used in analternative embodiment in which two mobile platforms stretch a cuttingblade or wire between them. For example, each platform may be controlledindependently, allowing the cutting line to be moved arbitrarily in 3D,for example to cut foam.

In some embodiments, the system may be coupled or otherwise attached tovehicles or working equipment such as a dozer in which theposition-correcting mechanism is mounted on the vehicle. For example,some embodiments of the hybrid positioning system may include a vehiclecomprising a first position-correcting system that is accurate to withina first range and a second position-correcting system that is accurateto a second range that is more precise than the first range. The vehiclemay be driven over a sheet of material such as a steel plate lying onthe ground, and a cutting tool such as a plasma cutter could be used tocut the material. In some embodiments, the present disclosure mayfacilitate a plotting device or painting device, for example to lay outlines on a football field or mark a construction site. The vehicle, forexample, may include an industrial vehicle such as a forklift typevehicle configured to include a cutter or other tool, a camera, andcontrol circuitry described herein to determine location of the vehicle(or the tool) on the material, identify where to cut or mark thematerial, and adjust the tool to cur or mark the material in theappropriate location.

FIG. 24 is a block diagram of a computer system 1200 in accordance withan illustrative implementation. The computer system or computing device1200 can be used to implement the system 100, content provider, userdevice, web site operator, data processing system, weighting circuit,content selector circuit, and database. The computing system 1200includes a bus 1205 or other communication component for communicatinginformation and a processor 1210 or processing circuit coupled to thebus 1205 for processing information. The computing system 1200 can alsoinclude one or more processors 1210 or processing circuits coupled tothe bus for processing information. The computing system 1200 alsoincludes main memory 1215, such as a random access memory (RAM) or otherdynamic storage device, coupled to the bus 1205 for storing information,and instructions to be executed by the processor 1210. Main memory 1215can also be used for storing position information, temporary variables,or other intermediate information during execution of instructions bythe processor 1210. The computing system 1200 may further include a readonly memory (ROM) 1220 or other static storage device coupled to the bus1205 for storing static information and instructions for the processor1210. A storage device 1225, such as a solid state device, magnetic diskor optical disk, is coupled to the bus 1205 for persistently storinginformation and instructions.

The computing system 1200 may be coupled via the bus 1205 to a display1235, such as a liquid crystal display, or active matrix display, fordisplaying information to a user. An input device 1230, such as akeyboard including alphanumeric and other keys, may be coupled to thebus 1205 for communicating information and command selections to theprocessor 1210. In another implementation, the input device 1230 has atouch screen display 1235. The input device 1230 can include a cursorcontrol, such as a mouse, a trackball, or cursor direction keys, forcommunicating direction information and command selections to theprocessor 1210 and for controlling cursor movement on the display 1235.

According to various implementations, the processes described herein canbe implemented by the computing system 1200 in response to the processor1210 executing an arrangement of instructions contained in main memory1215. Such instructions can be read into main memory 1215 from anothercomputer-readable medium, such as the storage device 1225. Execution ofthe arrangement of instructions contained in main memory 1215 causes thecomputing system 1200 to perform the illustrative processes describedherein. One or more processors in a multi-processing arrangement mayalso be employed to execute the instructions contained in main memory1215. In alternative implementations, hard-wired circuitry may be usedin place of or in combination with software instructions to effectillustrative implementations. Thus, implementations are not limited toany specific combination of hardware circuitry and software.

Although an example computing system has been described in FIG. 24,implementations of the subject matter and the functional operationsdescribed in this specification can be implemented in other types ofdigital electronic circuitry, or in computer software, firmware, orhardware, including the structures disclosed in this specification andtheir structural equivalents, or in combinations of one or more of them.

Implementations of the subject matter and the operations described inthis specification can be implemented in digital electronic circuitry,or in computer software, firmware, or hardware, including the structuresdisclosed in this specification and their structural equivalents, or incombinations of one or more of them. The subject matter described inthis specification can be implemented as one or more computer programs,i.e., one or more circuits of computer program instructions, encoded onone or more computer storage media for execution by, or to control theoperation of, data processing apparatus. Alternatively or in addition,the program instructions can be encoded on an artificially generatedpropagated signal, e.g., a machine-generated electrical, optical, orelectromagnetic signal that is generated to encode information fortransmission to suitable receiver apparatus for execution by a dataprocessing apparatus. A computer storage medium can be, or be includedin, a computer-readable storage device, a computer-readable storagesubstrate, a random or serial access memory array or device, or acombination of one or more of them. Moreover, while a computer storagemedium is not a propagated signal, a computer storage medium can be asource or destination of computer program instructions encoded in anartificially generated propagated signal. The computer storage mediumcan also be, or be included in, one or more separate components or media(e.g., multiple CDs, disks, or other storage devices). Accordingly, thecomputer storage medium is both tangible and non-transitory.

The operations described in this specification can be performed by adata processing apparatus on data stored on one or morecomputer-readable storage devices or received from other sources.

The term “data processing apparatus” or “computing device” encompassesvarious apparatuses, devices, and machines for processing data,including by way of example a programmable processor, a computer, asystem on a chip, or multiple ones, or combinations of the foregoing.The apparatus can include special purpose logic circuitry, e.g., an FPGA(field programmable gate array) or an ASIC (application specificintegrated circuit). The apparatus can also include, in addition tohardware, code that creates an execution environment for the computerprogram in question, e.g., code that constitutes processor firmware, aprotocol stack, a database management system, an operating system, across-platform runtime environment, a virtual machine, or a combinationof one or more of them. The apparatus and execution environment canrealize various different computing model infrastructures, such as webservices, distributed computing and grid computing infrastructures.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, declarative orprocedural languages, and it can be deployed in any form, including as astand alone program or as a circuit, component, subroutine, object, orother unit suitable for use in a computing environment. A computerprogram may, but need not, correspond to a file in a file system. Aprogram can be stored in a portion of a file that holds other programsor data (e.g., one or more scripts stored in a markup languagedocument), in a single file dedicated to the program in question, or inmultiple coordinated files (e.g., files that store one or more circuits,sub programs, or portions of code). A computer program can be deployedto be executed on one computer or on multiple computers that are locatedat one site or distributed across multiple sites and interconnected by acommunication network.

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read only memory ora random access memory or both. The essential elements of a computer area processor for performing actions in accordance with instructions andone or more memory devices for storing instructions and data. Generally,a computer will also include, or be operatively coupled to receive datafrom or transfer data to, or both, one or more mass storage devices forstoring data, e.g., magnetic, magneto optical disks, or optical disks.However, a computer need not have such devices. Moreover, a computer canbe embedded in another device, e.g., a mobile telephone, a personaldigital assistant (PDA), a mobile audio or video player, a game console,a Global Positioning System (GPS) receiver, or a portable storage device(e.g., a universal serial bus (USB) flash drive), to name just a few.Devices suitable for storing computer program instructions and datainclude all forms of non volatile memory, media and memory devices,including by way of example semiconductor memory devices, e.g., EPROM,EEPROM, and flash memory devices; magnetic disks, e.g., internal harddisks or removable disks; magneto optical disks; and CD ROM and DVD-ROMdisks. The processor and the memory can be supplemented by, orincorporated in, special purpose logic circuitry.

To provide for interaction with a user, implementations of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input.

The system 100 and its components, such as a data processing system, mayinclude hardware elements, such as one or more processors, logicdevices, or circuits. FIG. 25 shows an illustration of an examplenetwork environment comprising client machines in communication withremote machines in accordance with an implementation. The system 100 canoperate in the exemplary network environment depicted in FIG. 25. Inbrief overview, the network environment includes one or more clients1302 that can be referred to as local machine(s) 1302, client(s) 1302,client node(s) 1302, client machine(s) 1302, client computer(s) 1302,client device(s) 1302, endpoint(s) 1302, or endpoint node(s) 1302) incommunication with one or more servers 1306 that can be referred to asserver(s) 1306, node 1306, or remote machine(s) 1306) via one or morenetworks 1305. In some implementations, a client 1302 has the capacityto function as both a client node seeking access to resources providedby a server and as a server providing access to hosted resources forother clients 1302.

Although FIG. 25 shows a network 1305 between the clients 1302 and theservers 1306, the clients 1302 and the servers 1306 may be on the samenetwork 1305. The network 1305 can be a local-area network (LAN), suchas a company Intranet, a metropolitan area network (MAN), or a wide areanetwork (WAN), such as the Internet or the World Wide Web. In someimplementations, there are multiple networks 1305 between the clients1305 and the servers 1306. In one of these implementations, the network1305 may be a public network, a private network, or may includecombinations of public and private networks.

The network 1305 may be any type or form of network and may include anyof the following: a point-to-point network, a broadcast network, a widearea network, a local area network, a telecommunications network, a datacommunication network, a computer network, an ATM (Asynchronous TransferMode) network, a SONET (Synchronous Optical Network) network, a SDH(Synchronous Digital Hierarchy) network, a wireless network and awireline network. In some implementations, the network 1305 may includea wireless link, such as an infrared channel or satellite band. Thetopology of the network 1305 may include a bus, star, or ring networktopology. The network may include mobile telephone networks utilizingany protocol or protocols used to communicate among mobile devices,including advanced mobile phone protocol (“AMPS”), time divisionmultiple access (“TDMA”), code-division multiple access (“CDMA”), globalsystem for mobile communication (“GSM”), general packet radio services(“GPRS”) or universal mobile telecommunications system (“UMTS”). In someimplementations, different types of data may be transmitted viadifferent protocols. In other implementations, the same types of datamay be transmitted via different protocols.

In some implementations, the system 100 may include multiple,logically-grouped servers 1306. In one of these implementations, thelogical group of servers may be referred to as a server farm 1338 or amachine farm 1338. In another of these implementations, the servers 1306may be geographically dispersed. In other implementations, a machinefarm 1338 may be administered as a single entity. In still otherimplementations, the machine farm 1338 includes a plurality of machinefarms 1338. The servers 1306 within each machine farm 1338 can beheterogeneous—one or more of the servers 1306 or machines 1306 canoperate according to one type of operating system platform.

In one implementation, servers 1306 in the machine farm 1338 may bestored in high-density rack systems, along with associated storagesystems, and located in an enterprise data center. In thisimplementation, consolidating the servers 1306 in this way may improvesystem manageability, data security, the physical security of thesystem, and system performance by locating servers 1306 and highperformance storage systems on localized high performance networks.Centralizing the servers 1306 and storage systems and coupling them withadvanced system management tools allows more efficient use of serverresources.

The servers 1306 of each machine farm 1338 do not need to be physicallyproximate to another server 1306 in the same machine farm 1338. Thus,the group of servers 1306 logically grouped as a machine farm 1338 maybe interconnected using a wide-area network (WAN) connection or ametropolitan-area network (MAN) connection. For example, a machine farm1338 may include servers 1306 physically located in different continentsor different regions of a continent, country, state, city, campus, orroom. Data transmission speeds between servers 1306 in the machine farm1338 can be increased if the servers 1306 are connected using alocal-area network (LAN) connection or some form of direct connection.Additionally, a heterogeneous machine farm 1338 may include one or moreservers 1306 operating according to a type of operating system, whileone or more other servers 1306 execute one or more types of hypervisorsrather than operating systems. In these implementations, hypervisors maybe used to emulate virtual hardware, partition physical hardware,virtualize physical hardware, and execute virtual machines that provideaccess to computing environments.

Management of the machine farm 1338 may be de-centralized. For example,one or more servers 1306 may comprise components, subsystems andcircuits to support one or more management services for the machine farm1338. In one of these implementations, one or more servers 1306 providefunctionality for management of dynamic data, including techniques forhandling failover, data replication, and increasing the robustness ofthe machine farm 1338. Each server 1306 may communicate with apersistent store and, in some implementations, with a dynamic store.

Server 1306 may include a file server, application server, web server,proxy server, appliance, network appliance, gateway, gateway, gatewayserver, virtualization server, deployment server, secure sockets layervirtual private network (“SSL VPN”) server, or firewall. In oneimplementation, the server 1306 may be referred to as a remote machineor a node.

The client 1302 and server 1306 may be deployed as or executed on anytype and form of computing device, such as a computer, network device orappliance capable of communicating on any type and form of network andperforming the operations described herein.

FIG. 26 illustrates an example system 2400 providing an online designstore via a computer network such as network 1305. The network 1305 caninclude computer networks such as the Internet, local, wide, metro, orother area networks, intranets, satellite networks, and othercommunication networks such as voice or data mobile telephone networks.The network 1305 can be used to access web pages, web sites, domainnames, online documents, or uniform resource locators that can bedisplayed on at least one user device 2410, such as a cutting system,drawing system, laptop, desktop, tablet, personal digital assistant,smart phone, or portable computers. For example, via the network 1305 auser of the user device 2410 can access web pages provided by at leastone design store operator 2415. In this example, a web browser of theuser device 2410 can access a web server of the design store operator2415 to retrieve a web page for display on a monitor of the user device2410. The design store operator 2415 generally includes an entity thatoperates the design store. In one implementation, the design storeoperator 2415 includes at least one web page server that communicateswith the network 1305 to make the web page available to the user device2410.

The system 2400 can include at least one data processing system 2405.The data processing system 2405 can include at least one logic devicesuch as a computing device having a processor to communicate via thenetwork 1305, for example with the user device 2410, the design storeoperator 2415, and at least one design provider 2425. The dataprocessing system 2405 can include at least one server. For example, thedata processing system 2405 can include a plurality of servers locatedin at least one data center. In one implementation, the data processingsystem 2405 includes a content placement system having at least oneserver. The data processing system 2405 can also include at least onedesigner 2430, ordering module 2435, instructor 2440, and database 2445.The designer 2430, ordering module 2435 and instructor 2440 can eachinclude at least one processing unit or other logic device such asprogrammable logic arrays or application specific integrated circuitsconfigured to communicate with the database 2445. The designer 2430,ordering module 2435, and instructor 2440 can be separate components, asingle component, or part of the data processing system 2405.

In some embodiments, the data processing system 2405 includes a designer2430 configured to provide a plurality of designs to a user of the userdevice 2410. The designer 2430 may receive a selection of a design andmay be further configured to customize the design based on a pluralityof parameters. For example, the designer 2430 may customize the designbased on length, width or height parameters, weight (e.g., the amount ofweight a table might hold), number of drawers, or style. The designer2430 may receive one or more parameters from a user of the user device2410.

In some embodiments, the designer 2430 may provide a plurality ofoptions for a design from which a user may select one or more option.For example, the designer 2430 may display, via a user interface, a dropdown menu that includes options for the number drawers for a table(e.g., 1, 2, or 3 drawers). Designer 2430 may receive a selection of thenumber of drawers and design a table accordingly.

In some embodiments, the designer 2430 may be configured to determine adesign plan based on the dimensions or other parameters. For example, ifthe table top is two feet by four feet, the designer 2430 may determineto order a piece of wood with the dimensions of two feet by four feet.The designer 2430 may further determine that there are four drawers andeach drawer needs four pieces with dimensions one foot by two feet each.In some embodiments, the designer 2430 may determine to generate adesign plan such that all four pieces can be cut out of a single pieceof wood, two pieces of wood, or as four pieces of wood.

In some embodiments, the designer 2430 may be configured to transmit thedesign plan to the user device 2410, such as, e.g., a cutting systemdisclosed herein. The user device 2410 may include a communicationinterface configured to receive the design plan. The design plan mayinclude a CAD drawing, JPEG, GIF, BMP, or any other format or softwarethat can convey a design plan. The designer 2430 may convey the designto the user device 2410 via the network, over a wireless protocol, flashdrive, USB drive, or wired link (e.g., USB cable, serial port, Ethernet,or Firewire). In some embodiments, a user may draw the design plan onthe target material. In some embodiments, the user may print the designplan and place it on the target material. In some embodiments, thesystem may take a picture of the design plan and overlay the design onthe digital map of the material. In some embodiments, the system mayrelate the design plan to scanned data of the surface of the material(e.g., correlate the design plan to the scanned data, map the designplan to the scanned data, register the design plan to the scanned data,etc.). For example, the scanned data may include a digital map of thesurface of the material with which the system can relate the designplan.

In some embodiments, the data processing system 2405 includes anordering module 2435 configured to determine supplies or parts needed tobuild the design or order the parts and supplies from a vendor. Forexample, the ordering module 2435 may determine, based on the design,the dimensions of a piece of wood and the type of wood being used forthe project and identify a vendor that supplies the wood. The orderingmodule 2435 may search a database of a vendor or may send a query to avender, via the network, to determine whether the vendor can provide thepart.

In some embodiments, the ordering module 2435 may facilitate purchasingthe part. The ordering module 2435 may prompt the user to enter paymentinformation and relay the payment information to the vendor so that usercan directly or indirectly purchase the supplies from the vendor.

In some embodiments, the data processing system 2445 may include aninstructor 2440 configured to provide instructions to a user of the userdevice 2410. Instructions may include instructions on how to select adesign, customize a design, order supplies, transfer the design plan toa user device 2410 or cutting or drawing system, safety tips, how to usea cutting tool, or assembly instructions. In some embodiments, theinstructor 2440 may provide video tutorials. In some embodiments, theinstructor 2440 may provide interactive information. In someembodiments, a user may interact with an online community via theinstructor 2440. For example, a user may post questions on a messageboard, online chat room, or another online medium in which another userof the system 2405 can response to a question.

In some embodiments, the data processing system 2405 may include anonline community functionality that provides access to reviews andratings provided by other users. For example, users of the dataprocessing system 2405 comprising the online community may rate a designplan for a table and further write a review. In some embodiments, usersmay generate their own designs to the designer 2430 which may be storedin the database 2445.

In some embodiments, the data processing system 2405 may be configuredto allow users to purchase designs using money, tokens, points, oranother form of compensation. In some embodiments, users may sell theirown designs (e.g., design providers 2425) via the data processing system2405. In some embodiments, where a user modifies a design and sells themodified design, the user selling the modified version may receive aportion of the purchase price while the original design provider 2425who created the original design may receive a portion of the purchaseprice. In some embodiments, the entity controlling the data processingsystem 2405, e.g., the design store operator 2415, may receive portionof the purchase price.

The design plans purchased via the data processing system 2405 may beencoded such that they can only be transmitted or used by authorizedusers, which may be users that purchased the design. In someembodiments, users may obtain a monthly or yearly membership to thedesign store allowing them to purchase and use up to a certain number ofdesigns per time interval (possibly based on membership fee) orunlimited designs during a time interval.

Although various acts are described herein according to the exemplarymethod of this disclosure, it is to be understood that some of the actsdescribed herein may be omitted, and others may be added withoutdeparting from the scope of this disclosure.

It will be recognized by those skilled in the art that changes ormodifications may be made to the herein described embodiments withoutdeparting from the broad concepts of the disclosure. It is understoodtherefore that the disclosure is not limited to the particularembodiments which are described, but is intended to cover allmodifications and changes within the scope and spirit of the disclosure.

The systems described herein may provide multiple ones of any or each ofthose components and these components may be provided on either astandalone machine or, in some embodiments, on multiple machines in adistributed system. The systems and methods described herein may beimplemented as a method, apparatus or article of manufacture usingprogramming or engineering techniques to produce software, firmware,hardware, or any combination thereof. In addition, the systems andmethods described herein may be provided as one or morecomputer-readable programs embodied on or in one or more articles ofmanufacture. The term “article of manufacture” as used herein isintended to encompass code or logic accessible from and embedded in oneor more computer-readable devices, firmware, programmable logic, memorydevices (e.g., EEPROMs, ROMs, PROMs, RAMs, SRAMs), hardware (e.g.,integrated circuit chip, Field Programmable Gate Array (FPGA),Application Specific Integrated Circuit (ASIC)), electronic devices, acomputer readable non-volatile storage unit (e.g., CD-ROM, floppy disk,hard disk drive). The article of manufacture may be accessible from afile server providing access to the computer-readable programs via anetwork transmission line, wireless transmission media, signalspropagating through space, radio waves, or infrared signals. The articleof manufacture may be a flash memory card or a magnetic tape. Thearticle of manufacture includes hardware logic as well as software orprogrammable code embedded in a computer readable medium that isexecuted by a processor. In general, the computer-readable programs maybe implemented in any programming language, such as LISP, PERL, C, C++,C #, PROLOG, or in any byte code language such as JAVA. The softwareprograms may be stored on or in one or more articles of manufacture asobject code.

Having described certain embodiments of methods and systems forvirtualizing audio hardware for one or more virtual machines, it willnow become apparent to one of skill in the art that other embodimentsincorporating the concepts of the disclosure may be used.

While various embodiments have been described and illustrated herein,those of ordinary skill in the art will readily envision a variety ofother means or structures for performing the function or obtaining theresults or one or more of the advantages described herein, and each ofsuch variations or modifications is deemed to be within the scope of theembodiments described herein. More generally, those skilled in the artwill readily appreciate that all parameters, dimensions, materials, andconfigurations described herein are meant to be exemplary and that theactual parameters, dimensions, materials, or configurations will dependupon the specific application or applications for which the teachingsare used. Those skilled in the art will recognize, or be able toascertain using no more than routine experimentation, equivalents to thespecific embodiments described herein. It is, therefore, to beunderstood that the foregoing embodiments are presented by way ofexample only and that, within the scope of the appended claims andequivalents thereto, embodiments may be practiced otherwise than asspecifically described and claimed. Embodiments of the presentdisclosure are directed to each individual feature, system, article,material, kit, or method described herein. In addition, any combinationof two or more such features, systems, articles, materials, kits, ormethods, if such features, systems, articles, materials, kits, ormethods are not mutually inconsistent, is included within the scope ofthe present disclosure.

The herein-described embodiments can be implemented in any of numerousways. For example, the embodiments may be implemented using hardware,software or a combination thereof. When implemented in software, thesoftware code can be executed on any suitable processor or collection ofprocessors, whether provided in a single computer or distributed amongmultiple computers.

Also, a computer may have one or more input and output devices. Thesedevices can be used, among other things, to present a user interface.Examples of output devices that can be used to provide a user interfaceinclude printers or display screens for visual presentation of outputand speakers or other sound generating devices for audible presentationof output. Examples of input devices that can be used for a userinterface include keyboards, and pointing devices, such as mice, touchpads, and digitizing tablets. As another example, a computer may receiveinput information through speech recognition or in other audible format.

Such computers may be interconnected by one or more networks in anysuitable form, including a local area network or a wide area network,such as an enterprise network, and intelligent network (IN) or theInternet. Such networks may be based on any suitable technology and mayoperate according to any suitable protocol and may include wirelessnetworks, wired networks or fiber optic networks.

A computer employed to implement at least a portion of the functionalitydescribed herein may comprise a memory, one or more processing units(also referred to herein simply as “processors”), one or morecommunication interfaces, one or more display units, and one or moreuser input devices. The memory may comprise any computer-readable media,and may store computer instructions (also referred to herein as“processor-executable instructions”) for implementing the variousfunctionalities described herein. The processing unit(s) may be used toexecute the instructions. The communication interface(s) may be coupledto a wired or wireless network, bus, or other communication means andmay therefore allow the computer to transmit communications to orreceive communications from other devices. The display unit(s) may beprovided, for example, to allow a user to view various information inconnection with execution of the instructions. The user input device(s)may be provided, for example, to allow the user to make manualadjustments, make selections, enter data or various other information,or interact in any of a variety of manners with the processor duringexecution of the instructions.

The various methods or processes outlined herein may be coded assoftware that is executable on one or more processors that employ anyone of a variety of operating systems or platforms. Additionally, suchsoftware may be written using any of a number of suitable programminglanguages or programming or scripting tools, and also may be compiled asexecutable machine language code or intermediate code that is executedon a framework or virtual machine.

The concept described herein may be embodied as a computer readablestorage medium (or multiple computer readable storage media) (e.g., acomputer memory, one or more floppy discs, compact discs, optical discs,magnetic tapes, flash memories, circuit configurations in FieldProgrammable Gate Arrays or other semiconductor devices, or othernon-transitory medium or tangible computer storage medium) encoded withone or more programs that, when executed on one or more computers orother processors, perform methods that implement the various embodimentsdescribed herein. The computer readable medium or media can betransportable, such that the program or programs stored thereon can beloaded onto one or more different computers or other processors toimplement various aspects and embodiments described herein.

The terms “program” or “software” are used herein in a generic sense torefer to any type of computer code or set of computer-executableinstructions that can be employed to program a computer or otherprocessor to implement various aspects of embodiments as discussedherein. Additionally, according to one aspect, one or more computerprograms that when executed perform methods or operations describedherein need not reside on a single computer or processor, but may bedistributed in a modular fashion amongst a number of different computersor processors to implement various aspects or embodiments describedherein.

Computer-executable instructions may be in many forms, such as programmodules, executed by one or more computers or other devices. Generally,program modules include routines, programs, objects, components, or datastructures that perform particular tasks or implement particularabstract data types. Typically the functionality of the program modulesmay be combined or distributed as desired in various embodiments.

The data structures may be stored in computer-readable media in anysuitable form. For simplicity of illustration, data structures may beshown to have fields that are related through location in the datastructure. Such relationships may likewise be achieved by assigningstorage for the fields with locations in a computer-readable medium thatconvey relationship between the fields. Any suitable mechanism may beused to establish a relationship between information in fields of a datastructure, including through the use of pointers, tags or othermechanisms that establish relationship between data elements.

The concepts described herein may be embodied as one or more methods, ofwhich an example has been provided. The acts performed as part of themethod may be ordered in any suitable way. Accordingly, embodiments maybe constructed in which acts are performed in an order different thanillustrated, which may include performing some acts simultaneously, eventhough shown as sequential acts in illustrative embodiments.

As used herein, the terms “light”, “optical” and related terms shouldnot but understood to refer solely to electromagnetic radiation in thevisible spectrum, but instead generally refer to electromagneticradiation in the ultraviolet (about 10 nm to 390 nm), visible (390 nm to750 nm), near infrared (750 nm to 1400 nm), mid-infrared (1400 nm to15,000 nm), and far infrared (15,000 nm to about 1 mm).

The indefinite articles “a” and “an,” as used herein in thespecification and in the claims, unless clearly indicated to thecontrary, should be understood to mean “at least one.”

References to “or” may be construed as inclusive so that any termsdescribed using “or” may indicate any of a single, more than one, andall of the described terms.

In the claims, as well as in the specification herein, all transitionalphrases such as “comprising,” “including,” “carrying,” “having,”“containing,” “involving,” “holding,” “composed of,” and the like are tobe understood to be open-ended, i.e., to mean including but not limitedto.

APPENDIX

0. Abstract

Many kinds of digital fabrication are accomplished by precisely moving atool along a digitally-specified path. This precise motion is typicallyaccomplished fully automatically using a computer-controlled multi-axisstage. In this approach, one can only create objects smaller than thepositioning stage, and large stages can be quite expensive. We propose anew approach to precise positioning of a tool that combines manual andautomatic positioning: in this approach, the user coarsely positions aframe containing the tool in an approximation of the desired path, whilethe device tracks the frame's location and adjusts the position of thetool within the frame to correct the user's positioning error in realtime. Because the automatic positioning need only cover the range of thehuman's positioning error, this frame can be small and inexpensive, andbecause the human has unlimited range, such a frame can be used toprecisely position tools over an unlimited range.1. IntroductionPersonal digital fabrication endeavors to bridge the gap betweencomputer graphics and the real world, turning virtual models intophysical objects. Novel software modeling allows users to create uniqueobjects of their own design, e.g. [Mori and Igarashi 2007; Kilian et al.2008; Lau et al. 2011; Saul et al. 2011], which can then be fabricatedusing 2D devices such as laser or water jet cutters, or 3D devices suchas 3D printers and computer numerical control (CNC) mills. While rapidprototyping machines are dropping in price, affordable tools have severesize limitations because of the expense of a precise and long-rangepositioning system. As an illustration, a 2′×1.5′ ShopBot CNC mill costsapproximately $6,000, while a 5′×8′ ShopBot mill costs over $20,000[ShopBot Tools].We aim to reduce the cost of digital fabrication for the domain of 2Dshapes while simultaneously removing constraints on range. Our centralidea is to use a hybrid approach to positioning where a human providesrange while a tool with a cheap short-range position-adjustment enablesprecision. Given an input 2D digital plan such as the outline of ashape, the user manually moves a frame containing a tool in a roughapproximation of the desired plan. The frame tracks its location and canadjust the position of the tool within the frame over a small range tocorrect the human's coarse positioning, keeping the tool exactly on theplan (FIG. 2). A variety of tools can be positioned in this manner,including but not limited to a router (which spins a sharp bit to cutthrough wood, plastic, or sheet metal in an omnidirectional manner) tocut shapes, a vinyl cutter to make signs, and a pen to plot designs.In this approach, the core challenges are localization (determining thecurrent position of the tool) and actuation (correcting the tool'sposition). For localization, we use computer vision and special markersplaced on the material. For actuation, we present a new two-axis linkagethat can adjust the position of the tool within the frame. We alsodescribe an interface for guiding the user using a screen on the frame,which illustrates the tool's current position relative to the plan. Weshow an example of a device (FIGS. 12-20) built using our approach whichcan be fitted with a router or a vinyl cutter, and show results that canbe achieved with these tools when they are positioned with ourcomputer-augmented approach.2. Related WorkPersonal digital fabrication has been an active area of research withinthe computer graphics community, in particular on interfaces thatintegrate fabrication considerations with design. Several papers havepresented systems to allow fabrication-conscious design of a variety ofmaterial and object types, such as plush toys [Mori and Igarashi 2007],chairs [Saul et al. 2011], furniture [Lau et al. 2011], shapes made outof a single folded piece of material [Kilian et al. 2008], and paneledbuildings [Eigensatz et al. 2010]. Other papers explore how to generatedesigns with desired physical properties, such as deformationcharacteristics [Bickel et al. 2010], appearance under directedillumination [Alexa and Matusik 2010], and subsurface scattering [Donget al. 2010; Hašan et al. 2010].When it comes to fabricating objects from these designs, the most widelyused devices are 3D printers, laser cutters, and CNC milling machines.Recently, a variety of efforts growing out of the DIY community havesought to reduce the cost of 3D printers [MakerBot Industries: Drumm2011; Sells et al.] and CNC mills [Hokanson and Reilly; Kelly] forpersonal use. These projects typically provide relatively cheap kits forentry-level devices. However, as with professional models, positioningis done with a multi-axis stage, and the tradeoff between cost and rangeremains.Our computer-augmented positioning approach removes the limitation onrange of the above technologies. To do so, it relies on accuratelydetecting the position of the frame in real time. A variety ofapproaches to real-time localization have been employed over the years,from global-scale GPS [Getting 1993] to local-scale systems based onradio and ultrasonic signals [Priyantha et al. 2000]; an overview isgiven in a survey by Welch and Foxlin [2002].Our approach to localization is computer vision-based. Computer visionhas been widely used for position tracking in the context of motioncapture (see Moeslund et al. [2006] for a survey). These setupstypically use stationary cameras tracking a moving object, thoughrecently Shiratori et al. [2011] proposed a system in which cameras areplaced on the human and track the environment. In our approach, thecamera is on the tool and tracks the material over which it moves, firststitching frames together to make a map of the material (see Zitova andFlusser [2003] and Szeliski [2006] for surveys of image registration andstitching techniques) and then using that map to perform localization.This approach has been used before, with some differences, in a recentnew peripheral, LG's LSM-100 scanner mouse [LG; Zahnert et al. 2010],which is a mouse that can scan a document it is passed over. Ourimplementation differs from theirs in that we use only a camera (nooptical mice), capture a wider area of the material in each frame, anduse high-contrast markers placed on the material to allow capture ofuntextured materials.3. LocalizationTo keep the tool on the plan as closely as possible, the tool mustdetect its current position accurately, robustly, and with low latency.To this end, we considered a variety of localization systems, eventuallysettling on a simple computer vision-based approach, in which a cameraon the frame of the device tracks high-contrast markers placed (in anarbitrary pattern) on the material. In this approach, a map of thematerial (FIG. 28) is first built by passing the device back and forthover the material to be cut; then, images from the camera are comparedto this map to determine the device's location. This was chosen for avariety of reasons: it can achieve very high accuracy; it always remainscalibrated to the material (as the markers are on the material itself,as as opposed to, e.g., external beacons, which can becomeuncalibrated); it does not require excessive setup; the hardwarerequired is relatively inexpensive; and it can be implemented usingstandard computer vision techniques. Building the map is fast and easy.3.1. High-Contrast MarkersWe leverage specially-printed tape marked with high-contrast patterns tomake it possible to track materials that have no visual features oftheir own (such as sheet metal or plastic) and to increase robustnessunder varying lighting conditions. This tape is applied beforemap-making, in an any pattern so long as some tape is visible from everyposition that the device will move to, and can be removed when the jobis complete. The tape consists of many QR-code-like markers [Denso-WaveIncorporated] in a row, each consisting of an easily-detectablebox-within-box pattern we call an “anchor” and a 2D barcode thatassociates a unique number with the anchor (see FIG. 29). As long asfour of these markers are visible at any time (which is typically thecase even if only a single piece of tape is visible), the device is ableto locate itself. The redundancy of the markers means that it does notmatter if some are occluded (e.g. by sawdust) or obliterated by the toolitself. Note that these markers function just as features—theirpositions are not assumed before mapping, and therefore they need not belaid out in any specific pattern.3.2. Image ProcessingThe core operations used during locating and building a map aredetecting markers in an image and registering one set of markers ontoanother.Detecting markers To detect markers, the frame is first binarized usingthe Otsu method [1979]. Anchors are extracted using a standard approachto QR code reading: first, horizontal scanlines are searched for runs ofalternating pixel colors matching the ratio of 1:1:3:1:1, as will alwaysbe found at an anchor. Locations that match this pattern are thenchecked for the same pattern vertically. Locations that matchhorizontally and vertically are then flood filled to confirm thebox-within-box pattern. Once anchors have been extracted, each anchor isexperimentally matched with the nearest anchor, and the area in betweenis parsed as a barcode. Barcode orientation is disambiguated by havingthe first bit of the 2D barcode always be 1 and the last bit always be0. If the parsed barcode does not match this pattern, the next-nearestanchor is tried. If neither matches, the anchor is discarded. If thepattern is matched, the barcode's value is associated with the firstanchor and that anchor's position is added to the list of detectedmarkers.Matching sets of markers One set of markers is matched to another usinga RANSAC algorithm. The potential inliers are the pairs of markers fromthe two sets that share the same ID. The model that is fit is theleast-squares Euclidean transformation (rotation and translation).3.3. Building a MapMapping is done by stitching together video frames into a 2D mosaic(FIG. 28) as the user passes the device back and forth over thematerial. To reduce computation loads, we retain only frames thatoverlap with the previously retained frame by less than 75%. We use asimple method to stitch images together: as frames are acquired, theyare matched to all previous frames and assigned an initial position andorientation by averaging their offsets from successfully matched frames;once all images have been acquired, final positions and orientations arecomputed by iteratively applying all constraints between successfullymatched frames until the system converges to a stable configuration.Once the map is complete, a super-list of markers for the entire map isgenerated from the markers in input images by averaging the map-spacepositions of markers that share the same ID. This global list of knownpositions for each marker ID is what is used to localize new images whenthe device is in use.When preparing to cut a shape, the user will register a shape onto this2D map. Having the map of the material makes it trivial to visuallyalign the plan with features of the material. This would otherwiserequire careful calibration relative to a stage's origin point, as isusually the case with a CNC machine.3.4. Localization Using the MapOnce the map has been created as above, registering a new image to themap is straightforward. Markers are detected as above and matched to theglobal list of markers from the map using the same RANSAC algorithm asabove. An image from the camera can be registered to a map in ˜4milliseconds total on a standard laptop. Although localization exhibitsstrong time-coherence, thanks to the low cost of processing we canafford to solve the system from scratch at every frame.4. ActuationOnce the location of the frame is known, the tool must be repositionedwithin the frame to keep it on the plan. This task can be broken downinto the control challenge of determining where within the frame to move(as there are usually many possible positions that lie on the plan) andthe mechanical engineering challenge of building an accurate,responsive, and low-cost position-adjusting actuation system.The range of our positioning linkage was determined by first attemptingto move the frame along a 2D plan as closely as possible by hand. Wefound that when provided with accurate location information relative tothe plan a user can keep the tool within ⅛″ of the plan, even whencutting wood. (Having accurate location information allows for greaterprecision than normal freehand positioning.) To allow a safety marginand increase ease of use, we doubled this value to arrive at the goal ofbeing able to correct errors up to ¼″ (i.e. having a range circle with a½″ diameter).4.1. Actuation SystemThe actuation system need only support a small range of motion, as itneed only correct the coarse positioning done by the human. This affordsthe possibility of using a very different design for the positioningsystem than the multi-axis stage employed by traditional rapidprototyping machines.Our major mechanical departure from traditional rapid prototypingmachines is that we use eccentrics, rather than linear stages, toconvert the rotational motion of the motors into linear motion.Eccentrics are circular disks rotating around an off-center shaft. Asthey are rotated, they produce linear motion in a collar wrapped aroundthe disk. Eccentrics are able to maintain the same low-backlash accuracyof a precision linear stage while being much cheaper. For this, theysacrifice range. However, a linear displacement range of ½″ is wellwithin the capabilities of an eccentric.Our design (FIGS. 30(a), (b), FIG. 20) consists of two eccentricsmounted to the frame and connected to a stage that can slide on itsbase. The eccentrics are rotated by stepper motors, and by rotating themthe stage can be moved within the frame. To properly constrain thestage, one eccentric is connected directly to the stage by a ballbearing coupling, while the other is connected both by a coupling and ahinge.This linkage design results in a nonlinear relationship betweeneccentric orientation and stage position: near the center of its range,moderate rotation of an eccentric produces moderate motion of the stage,while near the edge of its range much larger rotations are necessary tomove the stage a fixed amount. We limit stage displacement to ˜95% ofthe maximum range to cut out the positions with extreme nonlinearity.This linkage design also permits backdriving, in that forces acting onthe tool can cause the cams to rotate away from their target positions;however, we found that the stepper motors we use (62 oz-in holdingtorque) are sufficiently powerful to preclude backdriving, even in thepresence of significant material forces.4.2. Following a PlanAs the user moves the frame, the device must ensure that the tool stayson the plan. To do this, the path that is to be followed must be firstcomputed (which may not be the same as the plan); then, every frame,given the frame's position, the tool's position within the frame, andthe plan, the device must determine where to move the tool within theframe.For the applications we focus on—routing and vinyl cutting—the usergenerally wishes to cut a shape out of a piece of material. This meansthat there will be some areas of the material that are outside thetarget shape, and which may be cut freely (which we call “exteriormaterial”), while other areas lie inside the target shape and must notbe cut (“interior material”). To allow for this distinction, we define aplan as consisting of polygons, with defined insides and outsides,rather than simply as paths.In applications such as vinyl cutting, the tool should follow the borderof the interior material as closely as possible. When routing, however,the size of the cutting bit must be taken into account, and the toolshould move along a path offset from the interior material by the radiusof the bit, to leave the actual cut shape as close as possible to thespecified plan. We provide an option to set the diameter of the cuttingbit and offset the plan polygons accordingly.We propose two different strategies for moving the tool to keep it onthe plan, and will show how each of these is appropriate for a differentclass of applications.4.2.1. Constant-Speed MotionIn the simpler strategy, the tool is moved through the material at asclose to a constant rate as possible. This strategy is useful forapplications such as routing, in which the material may offer resistanceif the tool is moved too quickly and may burn if the tool is moved tooslowly.In this approach, the user decides only what polygon to follow and whento start motion. Thereafter, the software drives the tool around thatpolygon at a constant rate. While the tool is moving, the user moves theframe to keep the tool near the center of its range, ensuring that thetool can continue its constant-speed motion without reaching the end ofits range. If the tool does reach the end of its range, it must stopuntil the user catches up.4.2.2. Freeform MotionIn the second strategy, the user moves the frame around the plan freely,and the device tries to keep the tool at the point on the plan that most“makes sense” given the user's positioning of the frame. This approachis suitable to applications such as plotting or vinyl cutting in whichthere is negligible material resistance and no need to move at aconstant rate.The point that the tool is moved to is, generally speaking, the closestpoint on the border of a plan polygon to the center of the tool's range.However, several considerations make determining the path to get to thispoint complicated. First, the tool should never move through interiormaterial, even if the shortest path from its current position to thetarget position goes through it. Second, the tool should seek to followthe border of the interior material even when a shorter direct route ispossible through exterior material, to avoid skipping over features ofthe plan.We aim to account for these considerations while also maximizing thepredictability of the tool's motion. We propose a simple strategy inwhich four possible paths are computed each frame, ranking from mostdesirable to least desirable, and the most desirable path that isfeasible is followed. All seek to move the tool to the target position,which is the closest point on the border of a plan polygon to the centerof the tool's range, or to the center of the tool's range itself if thetarget position is not reachable. These paths, illustrated in FIG. 31,are:I. The path that goes from the tool's position to the nearest point onthe border of a polygon, and then walks along the border of that polygonto the target position in whichever direction is shorter. This path isinfeasible if it leaves the tool's range or if the target position is onthe border of a polygon other than the polygon closest to the tool'sposition.II. The path that goes from the tool's position to the nearest exteriormaterial (if it is in the interior material) and then in a straight lineto the target position. This path is infeasible if the nearest exteriormaterial is outside the range or the straight line segment passesthrough interior material.III. The path that goes from the tool's position to the nearest exteriormaterial (if it is in the interior material) and then in a straight lineto the center of the tool's range, stopping whenever interior materialis encountered. This path is infeasible if the nearest exterior materiallies outside the range of the tool.IV. Don't move. This path is always feasible.5. Using the ToolAs described above, use of the device proceeds as follows: the userplaces marker tape on the material; the user scans the material; theuser registers a plan onto the scanned map of the material; the useruses the device to follow the plan. When following a plan, the userroughly follows the shape of the plan, and the positioning linkage movesthe router to keep it exactly on the plan. In principle, the tool canfollow any 2D path. In the application of routing, this means that itcan cut out any 2D shape in a single pass, or more complex 2.5D(heightmap) shapes using multiple passes at different depths.5.1. User InterfaceWhen following a plan, the user is shown the position of the toolrelative to the plan on the screen (see FIG. 32). In theory, the user'stask is to keep the center of the router's motion range as close to theplan as possible. In practice, the user may deviate by as much as theradius of the router's adjustment range.6. ResultsWe built a device (FIGS. 12-20) that implements the position-correctingsystem described above. The device that we built can be mounted a routeror vinyl cutter, and can follow any 2D plan. FIGS. 27 and 33 show shapescut out of wood, plastic, paperboard, and sheet metal. FIG. 11, 1175demonstrates the ability to follow plans of unlimited range with afull-size vinyl cutout of a human silhouette. FIG. 11, 1170 shows anexample of a cut shape with high-resolution details.We empirically tested the fidelity of shape reproduction by plotting acomplex pattern, scanning the result, and measuring deviation from thedigital plan (FIG. 34). The shape was plotted 6″ wide. We fitted a curveto the scanned plot, aligned the plan to that curve, and measureddeviation from evenly-sampled points along the drawn shape curve to thenearest point on the plan. The average error was 0.009″, with a maximumerror of 0.023″. The error was small enough that the aligned designalways fell within the width of the pen stroke.7. Conclusion and Future WorkWe have proposed a computer-augmented positioning system that avoids thecost-versus-range tension that currently affects rapid prototypingdevices, and demonstrated a tool using this approach that combines theunlimited range of a human operator with the accuracy of a computerizedpositioning system. This device incorporates a computer vision-basedsystem for localization and a specially designed low-cost linkage thatcan be used to adjust the position of a tool within the device's frame.We have shown how this device can be used with a router and a vinylcutter to accurately fabricate objects from digital plans.In future work, we would like to explore applying this type ofcomputer-augmented positioning to a variety of other tools and deviceform factors.

REFERENCES

ALEXA, M., AND MATUSIK, W. 2010. Reliefs as images. ACM Transactions onGraphics 29, 4 (July), 1.

BICKEL, B., BACHER, M., OTADUY, M. A., LEE, H. R., PFISTER, H., GROSS,M., AND MATUSIK, W. 2010. Design and fabrication of materials withdesired deformation behavior. ACM Transactions on Graphics 29, 4 (July),1.

DENSO-WAVE INCORPORATED. QR Code Specification.http://www.denso-wave.com/qrcode/index-e.html.

DONG, Y., WANG, J., PELLACINI, F., TONG, X., AND GUO, B. 2010.Fabricating spatially-varying subsurface scattering. ACM Transactions onGraphics 29, 4 (July), 1.

DRUMM, B., 2011. Printrbot. http://www.printrbot.com/.

EIGENSATZ, M., KILIAN, M., SCHIFTNER, A., MITRA, N. J., POTTMANN, H.,AND PAULY, M. 2010. Paneling architectural freeform surfaces. In ACMSIGGRAPH 2010 papers on—SIG-GRAPH '10, ACM Press, New York, N.Y., USA,vol. 29, 1.

FERRAIOLO, J., FUJISAWA, J., AND JACKSON, D., 2003. Scalable VectorGraphics (SVG) 1.1 Specification. World Wide Web Consortium,Recommendation REC-SVG11-20030114.

GETTING, I. 1993. Perspective/navigation—The Global Positioning System.IEEE Spectrum 30, 12, 36-38, 43-47.

GROSS, M. 2009. Now More than Ever: Computational Thinking and a Scienceof Design. 16, 2, 50-54.

HAŠAN, M., FUCHS, M., MATUSIK, W., PFISTER, H., AND RUSINKIEWICZ, S.2010. Physical reproduction of materials with specified subsurfacescattering. In ACM SIGGRAPH 2010 papers on—SIGGRAPH '10, ACM Press, NewYork, N.Y., USA, vol. 29, 1.

HOKANSON, T., AND REILLY, C. DIYLILCNC. http://diylilcnc.org/.

KELLY, S. Bluumax CNC. http://www.bluumaxcnc.com/Gantry-Router.html.

KILIAN, M., FLORY, S., CHEN, Z., MITRA, N. J., SHEFFER, A., ANDPOTTMANN, H. 2008. Curved folding. ACM Transactions on Graphics 27, 3(Aug.), 1.

LANDAY, J. A. 2009. Technical perspectiveDesign tools for the rest ofus. Communications of the ACM 52, 12 (Dec.), 80.

LAU, M., OHGAWARA, A., MITANI, J., AND IGARASHI, T. 2011. Converting 3Dfurniture models to fabricatable parts and connectors. In ACM SIGGRAPH2011 papers on—SIGGRAPH '11, ACM Press, New York, N.Y., USA, vol. 30, 1.

LG. LSM-100.http://www.lg.com/ae/it-products/external-hard-disk/LG-LSM-100.jsp.

MAKERBOT INDUSTRIES. MakerBot. http://www.makerbot.com/.

MOESLUND, T. B., HILTON, A., AND KRÜGER, V. 2006. A survey of advancesin vision-based human motion capture and analysis. Computer Vision andImage Understanding 104, 2-3 (Nov.), 90-126.

MORI, Y., AND IGARASHI, T. 2007. Plushie. In ACM SIGGRAPH 2007 paperson—SIGGRAPH '07, ACM Press, New York, N.Y., USA, vol. 26, 45.

OTSU, N. 1979. A Threshold Selection Method from Gray-Level Histograms.IEEE Transactions on Systems, Man, and Cybernetics 9, 1, 62-66.

PRIYANTHA, N. B., CHAKRABORTY, A., AND BALAKRISHNAN, H. 2000. TheCricket location-support system. In Proceedings of the 6th annualinternational conference on Mobile computing and networking—MobiCom '00,ACM Press, New York, N.Y., USA, 32-43.

SAUL, G., LAU, M., MITANI, J., AND IGARASHI, T. 2011. SketchChair. InProceedings of the fifth international conference on Tangible, embedded,and embodied interaction—TEI '11, ACM Press, New York, N.Y., USA, 73.

SELLS, E., SMITH, Z., BAILARD, S., BOWYER, A., AND OLLIVER, V. RepRap:The Replicating Rapid Prototyper: Maximizing Customizability by Breedingthe Means of Production.

SHIRATORI, T., PARK, H. S., SIGAL, L., SHEIKH, Y., AND HOD-GINS, J. K.2011. Motion capture from body-mounted cameras. ACM Transactions onGraphics 30, 4 (July), 1.

SHOPBOT TOOLS. ShopBot. http://www.shopbottools.com/.

SMITH, A., BALAKRISHNAN, H., GORACZKO, M., AND PRIYANTHA, N. 2004.Tracking moving devices with the cricket location system. In Proceedingsof the 2nd international conference on Mobile systems, applications, andservices—MobiSYS '04, ACM Press, New York, N.Y., USA, 190.SZELISKI, R. 2006. Image Alignment and Stitching: A Tutorial.Foundations and Trends in Computer Graphics and Vision 2, 1 (Jan.),1-104.WELCH, G., AND FOXLIN, E. 2002. Motion tracking: no silver bullet, but arespectable arsenal. IEEE Computer Graphics and Applications 22, 6(Nov.), 24-38.WEYRICH, T., DENG, J., BARNES, C., RUSINKIEWICZ, S., AND FINKELSTEIN, A.2007. Digital bas-relief from 3D scenes. In ACM SIGGRAPH 2007 paperson—SIGGRAPH '07, ACM Press, New York, N.Y., USA, vol. 26, 32.XIN, S., LAI, C.-F., FU, C.-W., WONG, T.-T., HE, Y., AND COHEN-OR, D.2011. Making burr puzzles from 3D models. ACM Transactions on Graphics30, 4 (July), 1.ZAHNERT, M. G., FONSEKA, E., AND ILIC, A., 2010. Handheld Scanner withHigh Image Quality.ZITOVA, B., AND FLUSSER, J. 2003. Image registration methods: a survey.Image and Vision Computing 21,11 (Oct.), 977-1000.

What is claimed is:
 1. A computer-implemented method for performing atask on a first surface of a workpiece using a working member moveablymounted to a rig, wherein the rig comprises a first actuator, and a rigpositioning system comprises a second actuator, the method comprising:generating first data based at least in part upon scanning, using afirst sensor operatively coupled to a processor, a first portion of asecond surface, wherein the second surface comprises the first surface;generating second data based at least in part upon scanning, using asecond sensor operatively coupled to a processor, a second portion ofthe second surface; providing, using a processor, first information thatcauses the first actuator to move the working member to a target pointon a desired path, wherein the first actuator moves the working memberrelative to the rig, the desired path is based at least in part upon adesign plan, and the first information is based at least in part uponthe first data, the second data, and the desired path; and providing, tothe rig positioning system by a processor, second information thatcauses the second actuator to move the rig to a different location. 2.The method of claim 1, wherein the first information is related to aposition of the first sensor or a position of the second sensor.
 3. Themethod of claim 1, wherein the first data is based at least in part uponone or more images of the first portion of the second surface, thesecond data is based at least in part upon an image of the secondportion of the second surface, the first data is based at least in partupon one or more markers in the first portion of the second surface, thesecond data is based at least in part upon one or more markers in thesecond portion of the second surface, and the first information is basedat least in part upon comparing the second data to the first data. 4.The method of claim 3, wherein the first portion of the second surfacedoes not include the first surface.
 5. The method of claim 3, whereinthe first sensor is the same as the second sensor.
 6. The method ofclaim 3, wherein the second surface is the same as the first surface. 7.The method of claim 6, wherein at least a portion of the weight of therig is supported by the first surface, and the target point correspondsto a location on the first surface.
 8. The method of claim 1, whereinthe first actuator is operable to move the working member inside anadjustment range, the target point is located in the adjustment range,and the adjustment range with the rig at the different location includesa portion of the desired path which was not in the adjustment rangeprior to the movement of the rig to the different location.
 9. Themethod of claim 1, further comprising: obtaining, via a communicationinterface operatively coupled to a processor, the design plan from aremote computer system.
 10. The method of claim 1, wherein the workingmember is moved to the target point using an eccentric mechanism coupledto the first actuator.
 11. A system for performing a task on a firstsurface of a workpiece using a working member moveably mounted to a rig,the system comprising: the rig, wherein the rig comprises a firstactuator, and the first actuator is operable to move the working memberrelative to the rig; a rig positioning system comprising a secondactuator, wherein the second actuator is operable to move the rig; oneor more processors; one or more sensors operatively coupled to the oneor more processors; one or more memories operatively coupled to the oneor more processors and having instructions stored thereon that, whenexecuted by the one or more processors, cause the system to: generatefirst data based at least in part upon scanning, using a first sensor ofthe one or more sensors, a first portion of a second surface, whereinthe second surface comprises the first surface; generate second databased at least in part upon scanning, using a second sensor of the oneor more sensors, a second portion of the second surface; provide firstinformation that causes the first actuator to move the working member toa target point on a desired path, wherein the desired path is based atleast in part upon a design plan, and the first information is based atleast in part upon the first data, the second data, and the desiredpath; and provide second information, to the rig positioning system,that causes the second actuator to move the rig to a different location.12. The system of claim 11, wherein the first data is based at least inpart upon one or more images of the first portion of the second surface,the second data is based at least in part upon an image of the secondportion of the second surface, the first data is based at least in partupon one or more markers in the first portion of the second surface, thesecond data is based at least in part upon one or more markers in thesecond portion of the second surface, and the first information is basedat least in part upon comparing the second data to the first data. 13.The system of claim 12, wherein the second surface is the same as thefirst surface.
 14. The system of claim 13, wherein at least a portion ofthe weight of the rig is supported by the first surface, and the targetpoint is a location on the first surface.
 15. The system of claim 11,wherein the first actuator is adapted to move the working member insidean adjustment range, the target point is located in the adjustmentrange, and the adjustment range with the rig at the different locationincludes a portion of the desired path which was not in the adjustmentrange prior to the movement of the rig to the different location.
 16. Anon-transitory computer readable medium storing executable instructionsthat facilitate performance of a task on a first surface of a workpieceusing a working member moveably mounted to a rig, wherein the rigcomprises a first actuator, the first actuator is operable to move theworking member relative to the rig, a rig positioning system comprises asecond actuator, the second actuator is operable to move the rig, andthe instructions, when executed by a computing system, cause the systemto: generate first data based at least in part upon scanning, using afirst sensor, a first portion of a second surface, wherein the secondsurface comprises the first surface; generate second data based at leastin part upon scanning, using a second sensor, a second portion of thesecond surface; provide first information that causes the first actuatorto move the working member to a target point on a desired path, whereinthe desired path is based at least in part upon a design plan, and thefirst information is based at least in part upon the first data, thesecond data, and the desired path; and provide second information, tothe rig positioning system, that causes the second actuator to move therig to a different location.
 17. The computer readable medium of claim16, wherein the first data is based at least in part upon one or moreimages of the first portion of the second surface, the second data isbased at least in part upon an image of the second portion of the secondsurface, the first data is based at least in part upon one or moremarkers in the first portion of the second surface, the second data isbased at least in part upon one or more markers in the second portion ofthe second surface, and the first information is based at least in partupon comparing the second data to the first data.
 18. The computerreadable medium of claim 17, wherein the second surface is the same asthe first surface.
 19. The computer readable medium of claim 18, whereinat least a portion of the weight of the rig is supported by the firstsurface, and the target point is a location on the first surface. 20.The computer readable medium of claim 16, wherein the first actuator isadapted to move the working member inside an adjustment range, thetarget point is located in the adjustment range, and the adjustmentrange with the rig at the different location includes a portion of thedesired path which was not in the adjustment range prior to the movementof the rig to the different location.